我有一些看起来像这样的代码。 select#member_id
的值由PHP动态添加。我正在尝试确定用户是否从列表中选择res
或com
选项,这将决定我是否在第二个下拉列表中动态添加。使用代码,我始终得到-1脚本提醒。 console.log
来电打印出[1, 3] [2]
。
<script>
var res_members = new Array();
var com_members = new Array();
</script>
<p><select name="member_id" id="member_id">
<option value=""></option>
<option value="1">Alice (res)</option><script>res_members.push(1);</script>
<option value="2">Bob (com)</option><script>com_members.push(2);</script>
<option value="3">Carl (res)</option><script>res_members.push(3);</script>
</select></p>
<script>
console.log(res_members, com_members);
$(function(){
$('#member_id').change(function(){
alert($.inArray($('#member_id').val(), res_members));
alert($.inArray($('#member_id').val(), com_members));
});
});
</script>
答案 0 :(得分:2)
为什么不选择更简单,更方便的东西:
<p><select name="member_id" id="member_id">
<option value=""></option>
<option class="res" value="1">Alice (res)</option>
<option class="com" value="2">Bob (com)</option>
<option class="res" value="3">Carl (res)</option>
</select></p>
<script>
$(function(){
$('#member_id').change(function(){
var isRes = $(this).find(':selected').hasClass('res');
alert(isRes ? "res" : "com");
});
});
</script>
<强> See it in action 强>
更新:为什么您当前的代码不起作用
这是因为您在使用push
搜索字符串时将整数推入数组(使用$.inArray
)。更改其中任何一项都会使现有代码生效。
所以一个解决方案是推送字符串:
<option value="1">Alice (res)</option><script>res_members.push("1");</script>
<option value="2">Bob (com)</option><script>com_members.push("2");</script>
<option value="3">Carl (res)</option><script>res_members.push("3");</script>
另一个是寻找整数:
alert($.inArray(parseInt($(this).val()), res_members));
alert($.inArray(parseInt($(this).val()), com_members));
显然$.inArray
使用运算符===
将haystack元素与指针进行比较。