2014-10-27 152 views
0

我有一個函數比較兩個字段。驗證後顯示錯誤消息 - jQuery驗證

$.validator.addMethod("validatormethod", function (value, element) { 
    return $('#Field1').val() > $('#Field2').val() 
}, "Test"); 

形式是動態的,因此形式使用each驗證:

$('.validateclass').each(function() { 
     $(this).rules('add', { 
      validatormethod: true, 
      messages: {validatormethod: "Test" } 
     }) 
    }); 

$('.validateclass2').each(function() { 
     $(this).rules('add', { 
      required: true, 
      messages: {required: "This field is required" } 
     }) 
    }); 

$('#myForm').valid(); 

現在我的問題是消息Test一旦出現頁面加載。只有在比較字段後纔會出現。我知道這是由於行$('#formSaveComponent').valid();。但我希望在頁面加載時顯示所需的消息。有什麼方法可以使用jQuery Validate插件完成這件事。

SAMPLE FIDDLE

+0

顯示爲表單的HTML。另外解釋更多關於爲什麼當頁面加載時你觸發'.valid()'和你的標題應該是什麼意思。驗證後顯示錯誤消息是默認行爲。 – Sparky 2014-10-27 18:07:45

+0

我正在觸發,因爲有很多字段和一些字段,我希望驗證在頁面加載後立即觸發。點擊提交按鈕後不是。 – user2281858 2014-10-27 18:10:04

+0

在窗體加載時,表單加載中的.Valid()將爲窗體上的每個字段運行,這就是爲什麼「測試」顯示出來的原因。如果您只想要驗證某些內容,則應指定要驗證的字段,而不是整個表單。 – tlbignerd 2014-10-27 18:13:25

回答

1

報價OP:

「現在我的問題是測試,一旦出現頁面加載的消息應該只出現在現場比較後。」

你寫你的自定義方法,如果字段required ...這就是爲什麼你會立即收到錯誤消息,而字段仍然是空的。

只要這些字段不required,你將需要添加this.optional(element) ||到您的自定義方法如下...

$.validator.addMethod("validatormethod", function (value, element) { 
    return this.optional(element) || $('#Field1').val() > $('#Field2').val() 
}, "Test"); 

現在的自定義方法將不會觸發除非東西進入相關領域。


編輯1

雖然我不知道爲什麼,在你的jsfiddle,你是一個>比較操作比較txtLastNametxtFirstName ...究竟怎麼可能一個名字是「大於」另一個?


EDIT 2

Your jsFiddle是因爲破...

  1. 你被id定位字段,但是你的字段僅包含一個name沒有id。 將$('#fieldname')更改爲$('[name="fieldname"]'),以name爲目標。

  2. 您正在比較兩個字符串與一個比較運算符,它總是會失敗,因爲字符串不是數字。您需要parseInt()將字符串轉換爲整數以比較它們...

    parseInt($('[name="fieldname"]').val()) 
    

DEMO:http://jsfiddle.net/h4bf10vt/3/

+0

這是有效的,但即使它是一個合適的(有效)字段 – user2281858 2014-10-27 18:20:29

+0

@ user2281858,也會出現'測試'消息,這是沒有意義的,因爲當字段有效時從不會顯示錯誤消息;爲什麼我已經兩次要求你在你的問題中顯示相關的HTML代碼。我會看看你的jsFiddle,但根據本網站的規則,jsFiddle不是在問題本身內顯示代碼的替代品。 – Sparky 2014-10-27 18:25:58

+0

@ user2281858,我的代碼在你的jsFiddle中:http://jsfiddle.net/h4bf10vt/2/〜準確地解釋這個失敗的原因。 – Sparky 2014-10-27 18:27:53