0

少なくとも 1 つの要素が選択されていることを検証する必要があります。この要素は動的に入力されました。検証エンジンを使用して、少なくとも 1 つのオプション要素が選択されているかどうかを検証する必要があります。

ここに選択オプション項目を入力します

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要素にオプションが設定されている場合にのみ、必要なルールを適用したいと考えています。

カスタム関数呼び出しでそれを行うことができます。選択のクラスをに変更します

<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.js707 行目でクラッシュするため動作しません (私見ですが、これはバグです)。したがって、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");
}

jsフィドル

于 2013-03-13T02:10:11.297 に答える