我可以标记一个字段无效的JavaScript?

从阅读这篇文章,我发现有一些伪类为“无效”和“无效”的input值。

有没有一种方法,我可以标记input字段从JavaScript无效/有效? 或者,我可以重写使用的validation方法吗?

有没有一种方法,我可以标记input字段从JavaScript无效/有效?

不幸的是,你不能在JavaScript中devise伪类,因为它们不是真正的元素,它们不存在于实际的DOM中。

用香草JavaScript你可以使用validationAPI 。

在jQuery中,你可以简单地这样做, http:

if ( $input.is(':invalid') ) { ... } 

或者,我可以重写使用的validation方法吗?

如果您使用的是HTML5validation,请继续使用标记。 否则,您可以使用$form.attr('novalidate', 'novalidate')禁用HTML5validation,并使用JSvalidation您的字段,然后在需要的地方添加validinvalid类。 我做了一个这样的插件来支持非HTML5浏览器。

你可以使用customValidity函数来达到这个目的。

如果您将自定义有效性消息添加到该字段,它将变为无效。 当您将消息设置为空string时,它将再次变为有效(除非由于其他原因而无效)。

field.setCustomValidity("Invalid field."); 将使该字段无效。

field.setCustomValidity(""); 将使该字段有效,除非它没有HTML5约束。

编辑 :有人澄清说,您正在寻找DOM的“有效”“无效”属性。

我会使用dom_object.setAttribute("isvalid", "true")为每个标签添加属性。 您也可以有一个中央validationfunction,每次更新这些属性(每次使用dom_object.getAttribute("isvalid") )。

每当元素失去焦点时,或者只要你想要,你都可以运行这个函数。

不完全优雅,但不幸的是,现在没有“伪”支持与JavaScript和HTML5。


如果我理解你的问题,你可以用Javascript进行validation。 但是,要注意的是,规避客户端validation,特别是JavaScriptvalidation是非常容易的 。 你永远不要信任客户端数据,并且总是在服务器端进行检查。

例如,我可以通过检查源代码轻松find元素ID,然后执行document.getElementById('some_id').setAttribute('max', new_number)来更改最大值(这是您的链接中的一个条目) 。

有很多种方法可以做到,所以我会尽量给你一个通用的习语。

您可以通过执行document.getElementById('form_element_id').value (请确保您给表单发送到服务器的name ,以及由javascript使用的id document.getElementById('form_element_id').value来获取该值。 对于textareas,你可以使用.innerHTML

那么你有一个variables的价值,有各种方法来检查它。

例如,你可以做if (parseInt(my_value) < 0) //error 。 你也可以使用正则expression式,我不会解释这一切,但你可以从这里开始http://www.w3schools.com/jsref/jsref_obj_regexp.asp 。 我知道w3schools是不是最好的来源,但我觉得这是一个好起点。

现在对于validation部分:添加onsubmit="return validateForm()到你的表单标签,其中validateForm()是完成所有检查的函数,如果有效,则返回true ,否则将覆盖缺省validation函数这在默认情况下什么都不做)。

所以在上面的例子中, //error将被return false所取代。 你也可以做其他的事情; 如提醒错误,然后返回false。 你也可以使用JavaScript来突出显示无效的字段(不知道这是你的意思是“ 标记一个input字段无效/有效从JavaScript ”)

当然,如果你不想检查所有的字段,只有当某些字段通过时才能返回true。 再一次,你不应该依赖这个,但如果你只是为了威慑一般人,那么这是一个简单的解决scheme。