2010-05-24 133 views
123

我想驗證html選擇元素使用jQuery驗證插件。我將「required」規則設置爲true,但它始終通過驗證,因爲默認情況下會選擇零索引。有什麼方法可以定義所需規則使用的空值嗎?jQuery驗證必填選擇

UPD。例。試想一下,我們有以下的HTML控件:

<select> 
    <option value="default">Choose...</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 

我想驗證插件使用「默認」值爲空。

+0

放一些代碼片段,這樣我們可以提供幫助。 – Lee 2010-05-24 23:55:25

+0

可能的重複:http://stackoverflow.com/questions/1271640/jquery-validate-select-box – cregox 2011-03-11 21:15:15

回答

182

你可以寫自己的規則!

// 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: { 
    SelectName: { valueNotEquals: "default" } 
    }, 
    messages: { 
    SelectName: { valueNotEquals: "Please select an item!" } 
    } 
}); 
+0

它也幫助了我,謝謝 – 2010-12-06 08:31:25

+0

保存我的一天!謝謝。 – 2012-05-26 15:56:25

+1

您可以測試選定的文本,而不是價值,如:! '$ .validator.addMethod( 「valueNotEquals」 功能(價值元素,ARG){ 收益回報ARG =的jQuery(元).find('選項:selected')。text(); },「Value must not equal arg。」);' – 2014-01-08 21:45:10

27

使用分鐘規則

設置第一個選項的值改爲0

'selectName':{min:1} 
+0

第一個值是固定的(對此值有一些後端邏輯) – SiberianGuy 2010-05-25 01:23:44

+1

太棒了!簡單! :-D – 2011-05-05 11:57:58

+0

偉大的黑客時髦 – 2016-02-11 12:28:06

199

更簡單的解決方案已經在這裏概述: Validate select box

使值是空的,並添加所需的屬性

<select id="select" class="required"> 
<option value="">Choose an option</option> 
<option value="option1">Option1</option> 
<option value="option2">Option2</option> 
<option value="option3">Option3</option> 
</select> 
+22

這是一個很好的答案,我很震驚,它不是接受的 – 2012-07-27 14:58:36

+4

這個應該是一個公認的。你不必編寫自己的方法。DRY – nXqd 2012-09-06 07:55:55

+9

但是你必須給你的選項一個空值 - 並不總是可能或不可能 – Muleskinner 2012-10-11 11:42:39

1

這很簡單,你需要獲得選擇字段值和它不能是「默認」。

if($('select').val()=='default'){ 
    alert('Please, choose an option'); 
    return false; 
} 
5

我不知道怎麼是插件的問題被問的時候(2010年),但我今天所面臨的同樣的問題,解決這樣說:

  1. 給你選擇的標籤一個名稱屬性。例如,在這種情況下

    <select name="myselect">

  2. 而是與屬性值=「默認」的標籤選項工作,禁止由安德魯·科茨

    建議的默認選項或設定值=「」 <option disabled="disabled">Choose...</option>

    <option value="">Choose...</option>

  3. 設置插件驗證規則

    $("#YOUR_FORM_ID").validate({ rules: { myselect: { required: true } } });

    <select name="myselect" class="required">

數據:如果你只有一個表單中的選擇安德魯·科茨的解決方案纔有效。如果您希望他的解決方案能夠處理多個選擇,請爲您的選擇添加一個名稱屬性。

希望它有幫助!:)

+0

謝謝你在這裏鞏固了答案。非常有幫助 – Christina 2014-12-02 19:49:04

+0

===這是最簡單和最簡單的答案=== – Stephen 2015-05-04 22:02:03

+0

簡而言之,將'required'屬性添加到'