2013-03-13 64 views
0

我使用jQuery驗證插件表單驗證,我無法驗證未使用的值字段,但文本字段的選擇框..jQuery的驗證選擇框與HTML值

這裏我的情況:

[HTML]

<form id="form"> 
     <select name="customPrice[0][50]" id="customPrice050"> 
       <option value="2435">Select date... </option> 
       <option value="474">Friday, Mar 1st</option> 
       <option value="475">Friday, Mar 8th</option> 
       <option value="476">Friday, Mar 15th</option> 
     </select> 
     <br/> 
     <input type="submit" value="Click" /> 

[jQuery的]

$(document).ready(function() 
{  
// add the rule here 
$.validator.addMethod("valueNotEquals", function(value, element, arg){ 
    return arg != value; 
}, "Value must not equal arg."); 

// configure your validation 
$("form").validate({ 
    rules: { 
    "customPrice[0][50]": { valueNotEquals: "2435" } 
    }, 
    messages: { 
    "customPrice[0][50]": { 
    valueNotEquals: "Please select a date!" 
    } 
    } 
}); 

} 

);

這很有效。問題是值2435不是靜態的,並且它總是變化。唯一的靜態屬性是文本「選擇日期...」。 現在我想是這樣的:

"customPrice[0][50]": { textNotEquals: "Select date... " } 

有人能幫助我嗎?

+1

,如果您使用的是最新的jQuery,你可以做一個檢查你的選擇的選擇指數大於0 $(治... ).prop(「selectedIndex」)> 0 http://stackoverflow.com/a/7373474/678338 – 2013-03-13 14:58:20

+0

@politus - 這是一個好主意。比根據第一個選項的文本要好得多。 – 2013-03-13 16:05:43

回答

1

回調函數的中間參數是被驗證的元素。您應該可以使用它從所選選項中獲取文本,並檢查它是否「選擇日期...」。

試試這個:

$.validator.addMethod("selectTextNotEquals", function(value, select, arg) { 
    return arg != $(select).find('option:selected').text(); 
}, "Text must not equal arg."); 

DEMO

+0

工作得很好!非常感謝 :-) – suikoy 2013-03-13 15:07:59