2013-04-05 100 views
1

我正在使用Web驱动程序填写表单,并且需要通过使用browser.execute_script()将隐藏表单字段插入到DOM中来绕过两个表单字段。禁用jQuery验证插件

但是我也需要禁用现有的验证方法才能提交表单。该表单使用jQuery验证。任何人都可以建议如何禁用部分或全部jQuery验证?

我尝试使用以下,但我得到的错误TypeError: d is undefined

b.execute_script(' 
    $("firstMemorableCharacter").rules("remove"); 
    $("secondMemorableCharacter").rules("remove"); 
') 

哪里firstMemorableCharacter是已连接的验证规则的形式字段的名称。

验证被设定为利用jQuery验证如下:(上图所示的规则是我需要禁用的)

with($.validator) { 
    addMethod(...); 

setDefaults({ 
    .... 
    messages: { }, 
    rules: { 
      firstMemorableCharacter: { 
       radioHasValue: true 
      }, 
      secondMemorableCharacter: { 
       radioHasValue: true 
      } 
    } 
}); 

预先

感谢。

UPDATE:

按照这个帖子,How do I remove jQuery validation from a form?,我试图提交使用HTML DOM(绕过jQuery的)使用$("#form-id")[0].submit();形式。然而,这不起作用 - 似乎在jQuery中还有一些额外的JavaScript需要执行,以便表单正确提交。

因此,我需要一种方式来明确禁用jQuery Validate中的这两个规则,而不是禁用整个jQuery或jQuery Validate。

+1

那岂不是更容易完成正常的形式(即像一个普通的用户),而不是黑客这一页? – 2013-04-05 12:45:26

+0

@JustinKo问题是,它不可能正常完成其中一个字段,因为它是一个自定义保存框元素。如果我改变元素(在这种情况下,输入单选元素),我得到了错误,我试图访问一个不可见的HTML元素。所以我认为插入一个隐藏的表单域会更容易。 – Imme22009 2013-04-05 13:32:07

+0

该元素的HTML是这样的:

.....
Imme22009 2013-04-05 13:32:53

回答

2

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

初始化后,您不能禁用它的任何部分。但是,您可以使用the .rules() method来动态操作规则,因为您已经猜到了。

只要确保.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"); 
+0

我不是像这样的暴力解决方法的巨人,我宁愿更有机地填写表格。 IOW我认为这是他们要问的错误问题。但是,那就是说,一个出色的答案能够解决OP所要求的问题。 – 2013-04-05 17:23:45

+1

@ChuckvanderLinden,我同意,我不太确定OP最终是如何实现这一切的。 – Sparky 2013-04-05 17:42:51

+0

完美 - 非常感谢您的答复。我最后遵循规则(“删除”)和名称目标 - 效果很好。 – Imme22009 2013-04-07 21:06:45