我正在尝试访问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>
但我得到的不确定。
谢谢,
答案 0 :(得分:0)
我怀疑问题不是未定义的索引,而是选择器中的冗余双引号,请尝试删除它们:
var category = $('select[name="category[][' + index + ']"]').val();
使用原始语法,选择器看起来像select[name="category[]["0"]"]
,由于未转义的嵌套双引号而无效。
答案 1 :(得分:0)
如果您有多个city[]
个复选框,每个复选框都有相应的category[]
选项,那么您的代码将不为您提供所需内容... index
in $.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();
...
答案 2 :(得分: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;
}
});
谢谢大家,