我有一个允许用户将用户添加到联系人列表的表单。我有多个选择框允许用户选择要添加的用户,但我也希望用户能够添加不在列表中的人。因此,选择新用户时,我希望使用表单弹出模态对话框以创建用户。无论使用哪个框,都应该显示相同的表单。因此,我给了它们所有相同的类名,并且我正在使用以下代码来检测新的用户选项。
$(function()
{
$( ".select-user" ).change(function()
{
alert("List Changed");
if ($(this).val() == 'new')
{
$( "#dialog-form" ).dialog( "open" );
updateTips("* indicates a mandatory field.");
}
});
});
但是,只有第一个框会触发此事件。第一个选择是这样定义的:
<select id ="select-user" class = "select-user" name="foo">
其他的盒子都是一样的,它们开始隐藏起来。
<select style="visibility:hidden" class="select-user" id="select-user-$index" name="bar">
它们通过以下代码可见:
document.getElementById('select-user-$index').style.visibility = "visible";
我已经确认 .change 事件除了第一次选择之外根本不会触发。关于事件的触发方式,我有什么遗漏吗?
编辑:正如我在 isherwood 的回答中所说,在 jsfiddle 中隔离选择框的代码提供了预期的行为。因此,有关该页面的更多信息。两个选择都是由(几乎)相同的 php 生成的。我复制并粘贴了大部分内容,但只是添加了几行来隐藏其他框并更改了 ID。
两个选择都采用相同的形式。第一个在 table 内,而其他的被扔到 .
前两个之后的每个选择框都是通过 javascript 添加的。