0

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

这里填写select选项项

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>

我只需要验证非空元素。

4

1 回答 1

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

于 2013-03-13T02:10:11.297 回答