禁用jQuery Validate插件
我正在使用Web驱动程序填写表单,并且需要通过使用browser.execute_script()
将隐藏的表单字段插入DOM来绕过两个表单字段。
但是,我还需要禁用现有的validation方法才能提交表单。 表单使用jQuery Validate。 任何人都可以建议如何禁用部分或全部jQuery Validate?
我尝试使用以下,但我收到错误TypeError: d is undefined
b.execute_script(' $("firstMemorableCharacter").rules("remove"); $("secondMemorableCharacter").rules("remove"); ')
其中firstMemorableCharacter
是附加validation规则的表单字段的名称。
validation是使用jQuery Validate设置的,如下所示:
with($.validator) { addMethod(...); setDefaults({ .... messages: { }, rules: { firstMemorableCharacter: { radioHasValue: true }, secondMemorableCharacter: { radioHasValue: true } } });
(上面显示的规则是我需要禁用的规则。)
提前致谢。
更新:
在这篇文章之后, 如何从表单中删除jQueryvalidation? ,我尝试使用$("#form-id")[0].submit();
使用HTML DOM(绕过jQuery)提交表单$("#form-id")[0].submit();
。 但是,这不起作用 – 似乎jQuery中有一些额外的JavaScript需要执行才能正确提交表单。
因此,我需要一种在jQuery Validate中专门禁用这两个规则的方法,而不是禁用整个jQuery或jQuery Validate。
任何人都可以建议如何禁用部分或全部JQuery Validator?
初始化后,您无法禁用它的任何部分。 但是,您可以使用.rules()
方法动态操作规则,如您已经猜到的那样。
只需确保在.rules()
之后的某个时间调用.rules()
方法,否则它将失败。
看到这个简单的演示: http : //jsfiddle.net/qdjMS/
您的代码中存在语法错误。
$("firstMemorableCharacter").rules("remove"); $("secondMemorableCharacter").rules("remove");
请注意,您的两个jQuery选择器毫无意义。
如果你试图定位一个id
,那么你需要一个#
在前面……
$("#firstMemorableCharacter").rules("remove"); $("#secondMemorableCharacter").rules("remove");
从你的评论中,我也注意到你的元素包含id="firstMemorableCharacter1"
,所以你还需要拼写完全相同的id
…
$("#firstMemorableCharacter1").rules("remove");
否则,您可以按name
定位它们,如我的演示中所示…
$("[name='firstMemorableCharacter']").rules("remove"); $("[name='secondMemorableCharacter']").rules("remove");