2015-06-24 34 views
2

我有一个非常简单的问题 - 有没有什么方法可以禁用某些选定输入的HTML5验证(而不是为整个表单设置“novalidate”)?HTML5 novalidate仅用于某些输入

我的意思是类似<input type='number' requirednovalidate>。但这不起作用。

你可能会问为什么我需要type =“number”或“required”呢?那么,我需要它,因为我的框架使用它进行自己的验证。

编辑

它是关于一个特殊的输入 - 出生数。我需要它是号码(由于移动设备),但其值主要与“/”(例如860518/8757)一起使用,对于类型号码而言,该值不是有效字符。所以我需要用户填写它没有斜线(8605188757)。问题是当html5输入中填充的值无效时(例如数字类型中的“fsda”),它看起来像是空的,没有值。

所以当用户填写错误格式的值(860518/8757)时,html验证被禁用,所以JS验证运行,它被验证为空字段。所以错误信息就像“请填写字段的出生号码”(这真是令人困惑),而不是像“抱歉,错误的格式”。

我的解决方案是为该字段启用html5验证(所以默认的浏览器消息在填写错误格式时显示)但禁用它为其他字段,以便他们将只验证我的JS验证。

+0

当输入类型为数字时,'/'符号不会出现在手机的键盘上。 –

+0

@ A.J我知道,但也有来自PC设备的流量。很多人习惯用'/'填充这个字段。我只需要在为数字类型(这很可能不可能)启用'/'和启用/禁用整个表单的html5验证之间进行某种妥协。 – flipis

回答

0

novalidate属性仅适用于表单标签,它不能应用于表单控件。

可以在JS除去必需的属性,你的框架验证后:

$('[Selector]').removeAttr('required');​​​​​ 

现在所选字段无法通过验证。

+0

问题是我的框架JS验证在html5验证后运行(这就是为什么我默认禁用了html5验证)。无论如何,它不仅仅是“必需的”属性。请看我的问题的编辑。 – flipis

+0

@flipis:当输入类型是数字时,**/**符号不会出现在手机的键盘上。 –

+0

向jQuery投票,认真的人;浏览器*已经支持JavaScript *;停止倾销70KB我不知道如何学习真实代码! – John

0

如果您想删除单个元素的验证,您可以在输入元素中使用formnovalidate。例如

<input type="submit" value="Save" class="button primary large" formnovalidate/> 

欲了解更多信息,请点击here

+0

这对我不起作用:''。我得到这个错误:“请输入一个有效值。两个最接近的有效值是100和150。“ – Ryan

+0

@Ryan好吧,既然你有'step =”50“'这个值只能是50,100,150,200,250等等,所以你不能有'value =”138.03“' – BinaryJoe01

+0

这里更好问题的解释:https://stackoverflow.com/questions/41522971/html-input-number-step-without-validation#comment78063820_41522971 – Ryan