2013-03-13 58 views
0

我需要做驗證,至少有一個元素被選中。這個元素是動態填充的,我需要驗證是否至少有一個選項元素被選中,使用驗證引擎。選擇多個元素非空驗證引擎不需要

這裏填寫選擇選項項目

jQuery("#bt_add").click(function(){ 
    storeUsedGroups[attr_group.val()] = true; 

    jQuery("#atributo_id").append('<option value='+attr_name.val() + 
     ' groupid='+attr_group.val()+'>' + attr_group.text() + 
     ' : ' + attr_name.text()+'</option>' 
    ); 
}); 

,並需要驗證,但對於提交表單選擇需要插入的選項。

<select name="atributo_id[]" id="atributo_id" multiple="multiple" class="validate[required]"> 
    <option value="5" groupid="1">Color : Azul</option> 
</select> 

我只需要驗證非空元素。

+0

你的意思是一個選項進行選擇? – RobG 2013-03-13 00:58:04

+1

歡迎來到堆棧溢出!你爲什麼不告訴我們你到目前爲止?當我們看到您爲解決問題而付出的努力時,您會發現社區更有幫助。 – 2013-03-13 01:03:12

回答

1

UPDATE:如果我正確理解你,你只想在選擇元素填充選項時才應用所需的規則。

你可以用自定義函數調用來做到這一點。更改您選擇的類

<select name="atributo_id[]" 
     id="atributo_id" 
     multiple="multiple" 
     class="validate[funcCall[ifSelectNotEmpty]]"> 

現在的功能

function ifSelectNotEmpty(field, rules, i, options){ 
    if ($(field).find("option").length > 0 && 
     $(field).find("option:selected").length == 0) { 
    // this allows the use of i18 for the error msgs 
    return "* This field is required"; 
    } 
} 

這應該是工作,但它不會因爲線路707 jquery.validationEngine.js崩潰(恕我直言,這是一個bug)。所以,你需要的,如果你想查詢從

if(!required && && !(field.val()) && field.val().length < 1) options.isError = false; 

if(!required && !field && !(field.val()) && field.val().length < 1) options.isError = false; 
       ^^^^^^ 

原來的答覆 改變線路707如果任何選項已被選中,你可以做這樣的

if (!$("#atributo_id option:selected").val()) { 
    alert("Nothing has been selected"); 
} 

if (!$("#atributo_id option:selected").length) { 
    alert("Nothing has been selected"); 
} 

jsFiddle

+0

最初,select元素是空的,沒有選項,當提交表單時我需要驗證。使用validationEngine,可能我需要使用自定義正則表達式,並且如果使用所需的類迫使我選擇它。 – Angel 2013-03-13 03:12:33

+0

是的,至少有一個選項。使用validationEngine。 – Angel 2013-03-13 03:20:19

+0

@Angel你需要更多的幫助嗎? – peterm 2013-03-13 15:14:20