无需选择多个元素非空验证引擎

时间:2013-03-13 00:52:58

标签: javascript jquery jquery-validation-engine

我需要验证至少选择了一个元素。这个元素是动态填充的,我需要使用验证引擎验证我是否至少选择了一个选项元素。

这里填写选择项目

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>

我只需要验证非空元素。

1 个答案:

答案 0 :(得分:1)

更新:如果我理解正确,则只有在使用选项填充选择元素时才应用所需规则。

您可以使用自定义函数调用来执行此操作。将您选择的课程更改为

<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";
  }
}

它应该有效,但它不会因为jquery.validationEngine.js在第707行崩溃(恕我直言,这是一个错误)。所以你需要从

改变第707行
if(!required && && !(field.val()) && field.val().length < 1) options.isError = false;

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

原始回答 如果您想检查是否已选择任何选项,您可以这样做

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

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

<强> jsFiddle