【发布时间】:2013-04-05 04:08:51
【问题描述】:
我正在使用 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。
【问题讨论】:
-
正常完成表单(即像普通用户一样)而不是破解页面不是更容易吗?
-
@JustinKo 问题是无法正常填写其中一个字段,因为它是自定义的保管箱元素。如果我更改元素(在本例中为输入单选元素),我会收到错误消息,即我试图访问不可见的 HTML 元素。所以我认为只插入一个隐藏的表单字段会更容易。
-
元素的 HTML 是这样的:.....
-
@Imme22009 不要将该 html 放在评论中,而是编辑您的问题并将信息放在可以正确格式化的地方
-
您是否可能需要模拟一些事件或动作(如鼠标悬停、焦点、悬停或 onchange)以使控件可见?如果用户可以操纵它,就必须有办法让它变得可见。告诉我们更多关于这个自定义保管箱的事情,其中大多数并不难弄清楚,如果你碰巧知道控制的特殊风格(jquery 或其他),通常有一个演示页面可以用来开发简单的有关如何使用控件的示例代码。能否请您提供您正在使用的 watir-webdriver 版本?
标签: jquery ruby jquery-validate watir-webdriver