输入类型=“url”表示相对URL

时间:2010-09-08 17:36:30

标签: html5 input

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

  • 它不允许相对网址。 about / awards是相对网址,但Chrome似乎拒绝除绝对网址http://domain/page/stuff
  • 以外的所有内容
  • 失败并不是特别明显。它只关注表单字段(不是特别明显),并拒绝提交表单。我得到的报告是“不起作用”的形式,因为他们没有注意到发生了什么,我花了几分钟才意识到发生了什么。

我已经通过切换回输入类型=“文本”来修复它,但这会使type="url"添加的一些有用的东西失败(例如iPhone上的特殊键盘)。

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

4 个答案:

答案 0 :(得分:2)

规范仍在进行中,但从这句话来看,听起来这可能是Chrome实施的一个问题(大胆强调是我的):

  

用户代理可以允许用户进行设置   字符串的值不是   有效的绝对网址,但也可以或   而是自动逃脱   用户输入的字符   值始终是有效的绝对值   URL(即使不是实际的   用户看到和编辑的值   界面)。用户代理应该   允许用户将值设置为   空字符串。用户代理不得   允许用户插入U + 000A LINE FEED   (LF)或U + 000D CARRIAGE RETURN(CR)   字符成为值。

Source

答案 1 :(得分:2)

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

答案 2 :(得分:0)

我正在使用的可用的语义解决方法是允许使用pattern属性的相对网址:

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

答案 3 :(得分:0)

某些浏览器不允许在输入相对URL时成功进行验证。而是将输入模式属性设置为正则表达式。