1

我正在使用 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
            }
    }
});

(上面显示的规则是我需要禁用的规则。)

提前致谢。

更新:

在这篇文章之后,如何从表单中删除 jQuery 验证?,我尝试使用 HTML DOM(绕过 jQuery)提交表单,使用$("#form-id")[0].submit();. 但是,这不起作用 - jQuery 中似乎有一些额外的 JavaScript 需要执行才能正确提交表单。

因此,我需要一种在 jQuery Validate 中专门禁用这两个规则的方法,而不是禁用整个 jQuery 或 jQuery Validate。

4

1 回答 1

2

任何人都可以建议如何禁用部分或全部 JQuery Validator?

一旦初始化,您就不能禁用它的任何部分。但是,您可以使用您已经猜到.rules()方法动态地操作规则。

只需确保在 某个时间之后.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作为目标,如我的演示中所示...

$("[name='firstMemorableCharacter']").rules("remove");
$("[name='secondMemorableCharacter']").rules("remove");
于 2013-04-05T14:28:44.190 回答