1

2 番目の要素にアクセスするために foreach ループのインデックスにアクセスしようとしています。

$.each("input:checkbox[name=city[]]:checked", function (index, item) {
    var category = $('select[name="category[]["' + index + '"]"]').val();
    alert(category);
    var split = category = category.split('_');
    var category = split[0];
    if (category == "0") {
        alert('Please select hotel category');
        validate = "false";
        return false;
    }
    else {
        validate = "true";
    }
});

これは私のhtmlです

<select name="category[]" 
         id="webmenus_<?php echo $BPackageCityRelatedToCountry[$i]['city_id']; ?>"      
         onchange="showValue(this.value)"
 >
     <option value="0" selected="selected" title="Please select hotel category"></option>
     <option value="5_<?php echo $BPackageCityRelatedToCountry[$i]['city_id']; ?>" title="/public/front_end/images/5star.png"></option>
     <option value="4_<?php echo $BPackageCityRelatedToCountry[$i]['city_id']; ?>" title="/public/front_end/images/4star.png"></option>
     <option value="3_<?php echo $BPackageCityRelatedToCountry[$i]['city_id']; ?>" title="/public/front_end/images/3star.png"></option>
     <option value="2_<?php echo $BPackageCityRelatedToCountry[$i]['city_id']; ?>" title="/public/front_end/images/2star.png"></option>
     <option value="1_<?php echo $BPackageCityRelatedToCountry[$i]['city_id']; ?>" title="/public/front_end/images/1star.png"></option>
</select>

しかし、私は未定義になっています。

ありがとう、

4

3 に答える 3

0

都市とカテゴリの両方に foreach ループを使用して解決しました。

 $("input:checkbox[name='city[]']:checked").each(function(j){
                var city=$(this);
                $('select[name="category[]"]').each(function(i){
                    if(i==j){
                        if($(this).val()=="0"){
                            alert("Please select hotel category");
                            city.click();
                            city.attr('checked', true);
                            validate="false";
                            return false;
                        }
                        else
                        {
                            validate="true";
                        }
                    }
                }); 
                if(validate=="false"){
                    return false;
                }
            });

皆さんありがとう、

于 2012-10-24T11:45:19.817 に答える
0

問題は未定義のインデックスではないと思われますが、セレクターの冗長な二重引用符は削除してみてください。

var category = $('select[name="category[][' + index + ']"]').val();

元の構文では、セレクターは のようselect[name="category[]["0"]"]になります。これは、ネストされた二重引用符がエスケープされていないため有効ではありません。

于 2012-10-23T13:22:58.537 に答える
0

多くのcity[]チェックボックスがあり、それぞれに対応するcategory[]選択がある場合、コードでは必要なものが得られませ ...ページではなく、セレクターに関連する要素のインデックスを参照しますindex$.each(この仮定が間違っている場合は、質問を明確にしてください。たとえば、html コードも投稿してください)

関連フィールドを選択するより良い方法は、共通の親を見つけてから、特定のクラスを検索することです。たとえば、マークアップが次のような場合:

<ul>
    <li>
        <input type="checkbox" name="city[]" />
        ...
        <select name="category[]">...</select>
    </li>
    <li> ... </li>
    ...
</ul>

selectたとえば、次を使用して権利を照会できます。

$.each("input:checkbox[name=city[]]:checked", function (index, item) {
    var category = $(this).closest("li").find('select[name="category[]"]').val();
    ...
于 2012-10-23T13:32:17.227 に答える