我正在使用Web驱动程序填写表单,并且需要通过使用browser.execute_script()
将隐藏的表单字段插入DOM来绕过两个表单字段。
但是,我还需要禁用现有的验证方法才能提交表单。该表单使用jQuery Validate。任何人都可以建议如何禁用部分或全部jQuery Validate?
我尝试使用以下内容,但收到错误TypeError: d is undefined
b.execute_script('
$("firstMemorableCharacter").rules("remove");
$("secondMemorableCharacter").rules("remove");
')
其中firstMemorableCharacter
是附加验证规则的表单字段的名称。
使用jQuery Validate设置验证,如下所示:
with($.validator) {
addMethod(...);
setDefaults({
....
messages: { },
rules: {
firstMemorableCharacter: {
radioHasValue: true
},
secondMemorableCharacter: {
radioHasValue: true
}
}
});
(上面显示的规则是我需要禁用的规则。)
提前致谢。
更新:
在这篇帖子How do I remove jQuery validation from a form?之后,我尝试使用$("#form-id")[0].submit();
使用HTML DOM(绕过jQuery)提交表单。但是,这不起作用 - 似乎jQuery中有一些额外的JavaScript需要执行才能使表单正确提交。
因此我需要一种在jQuery Validate中专门禁用这两个规则的方法,而不是禁用整个jQuery或jQuery Validate。
答案 0 :(得分:2)
有人可以建议如何禁用部分或全部JQuery Validator吗?
初始化后,您无法禁用它的任何部分。但是,您可以使用the .rules()
method动态操作规则,如您已经猜到的那样。
确保在{/ em> .rules()
之后某个时间调用.validate()
方法,否则它将失败。
请参阅此简单演示: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
定位in my demo ...
$("[name='firstMemorableCharacter']").rules("remove");
$("[name='secondMemorableCharacter']").rules("remove");