禁用jQuery Validate插件

时间:2013-04-05 04:08:52

标签: jquery ruby jquery-validate watir-webdriver

我正在使用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。

1 个答案:

答案 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");