2017-06-13 49 views
0

使用jQuery驗證使用數據屬性,我做的一個關於select有條件的驗證和text場:文本字段(#specialization)必須填寫,如果一個特定的選項(<option value="doctor">)從已選定選擇字段(#job如何爲條件驗證

到目前爲止好,這裏是一個工作副本:https://jsfiddle.net/vzx9paxz/2/

現在,我不喜歡惹太多的JS代碼,我想採取data-rule-required的優勢屬性。所以,我想直接在HTML代碼計算表達式($('#job').val() === 'doctor'),從JavaScript將其取出:如果返回true,該#specialization欄目必須填寫,否則它可以爲空

事情是這樣的:

<input type="text" data-rule-required="return ($('#job').val() === 'doctor')" class="form-control" id="specialization" name="specialization"> 

當然這個代碼不工作:我試過其他表達式,如javascript:return ($('#job').val() === 'doctor'),但沒有運氣可言......

回答

1

如何:使用數據屬性的條件驗證

你不能。


data-rule-required="return ($('#job').val() === 'doctor')" 

即使你可以一個data屬性的內部執行JavaScript,你不能,the jQuery Validate plugin cannot interpret it (see the JS errors in the console)。通常,它會在data-rule-required內尋找truefalse字符串...但它不能執行條件表達式。

換句話說,無論你把一個價值data-rule-required,jQuery的驗證插件將它解釋爲一個字符串,如哽在喉比"true""false"的任何其他。

+0

謝謝,明白了! :-) – Ivan

0

數據屬性傾斜觸發事件。 更好地編寫一個JavaScript函數,並通過單擊,焦點,調整大小,mouseup ...事件來調用它。像:

<input class="user" name=""> 

<script> 
    $(".user").focus(function(){ 
if($(this).val()=="doctor"){ 
// do what ever 
    } 
    }); 
+0

你對數據屬性是正確的。但是,OP不需要編寫事件處理程序,因爲條件可以放在插件的'.validate()'方法中。 – Sparky