2013-04-05 101 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