2010-09-08 83 views
7

我有一个输入框供用户在创建表单(有点类似于Wordpress)中进入页面的自定义链接。 (例如about/awards,它被用于http://site.com/pages/about/awards)在某些时候,Chrome停止工作,因为它们现在对input type="url"字段进行了更严格的验证。哪个会好,但:input type =“url”为相对URL

  • 它不允许相关网址。关于/奖励是相对URL,但Chrome似乎拒绝除绝对URL之外的所有内容http://domain/page/stuff
  • 失败并不特别明显。它只关注表单域(不是特别引人注目),并拒绝提交表单。我得到的报告是表格“不起作用”,因为他们没有注意到发生了什么事情,我花了几分钟才明白发生了什么事情。

我已经只是切换回输入型固定它=“文本”,但是这违背了一些有用的东西,type="url"添加(如特殊键盘上的iPhone)。

这是HTML5规范的一部分,还是Chrome实施中的问题?

+1

和你的问题是....? – GSto 2010-09-08 17:38:30

+0

@GSto:我的不好,忘了最重要的句子。 – Macha 2010-09-08 17:57:06

+0

您可以在提交时预先输入“http://”的相对URL以使其有效。看到这里的例子... https://stackoverflow.com/questions/17946960/with-html5-url-input-validation-assume-url-starts-with-http/41193579#41193579 – 2016-12-19 18:21:59

回答

2

它说,“虽然元素的值不是有效的绝对URL,该元素从一个类型不匹配的痛苦。”

2

该规范仍在开发中,但这个报价,这听起来像它可能是与Chrome的执行问题(粗体强调的是我的):

用户代理可以允许用户设置 值的字符串,它是不是一个有效 绝对URL,但也还是 而不是自动跳脱用户输入 字符,以便 价值始终是一个有效的绝对 URL(即使是不实际 价值看到和编辑b y用户在 的界面中)。用户代理应该 允许用户将该值设置为 空字符串。用户代理不得允许用户将U + 000A LINE FEED (LF)或U + 000D CARRIAGE RETURN(CR) 字符插入值中。

Source

0

一个plausable仍然语义的解决方法,我使用是允许使用pattern属性相对URL:

<input required="required" type="url" pattern="(https?|/).*?" name="sStyleBackgroundImageURL" value="{!sStyleBackgroundImageURL}"></input> 
+0

这不起作用(谷歌浏览器65.0.3325.146)。 – darkangel 2018-03-07 14:13:11