我正在构建一个javascript函数来在选择表单项时更新数据库表。这一切都很好。
JAVASCRPIT:
function changeFunc(){
var selectBox = document.getElementById("supervisor");
var selectedValue = selectBox.options[selectBox.selectedIndex].value;
if(selectedValue = 1){
var jqxhr = $.ajax("<?php echo $web_root; ?
>/file/reminder/supervisor_reminder.php?super=1")
.done(function(){ alert("success, supervisor Helen has
been alerted."); })
.fail(function(){ alert("error"); });
}
}
HTML:
<div id="supervisor">
<form action="" method="">
<label>Supervisor Alert</label>
<select id="supervisor" onchange="changeFunc()">
<option value=""></option>
<option value="1">Helen</option>
<option value="2">Nancy</option>
<option value="3">Joyce</option>
<option value="4">Bob</option>
<option value="5">Herb</option>
</select>
</form>
</div>
当我用div标签包装表单时,javascript函数不起作用。我希望能够在表格更新后隐藏表格。所以我为此目的包裹了div。但这会阻止javascript工作,我只是想知道是否有人可以告诉我原因。或者如何使用css隐藏表格。
答案 0 :(得分:4)
哟有两个具有相同ID的元素,因此将最外面的元素更改为
<div id="supervisorContainer">
答案 1 :(得分:2)
ID supervisor
只能使用一次!
因此,例如,将<div id="supervisor">
更新为<div id="supervisorBox">
并使用#supervisorBox隐藏此框。
例如:
$("#supervisorBox").hide();
答案 2 :(得分:1)
因为你给了div并且选择了相同的id。 div需要不同的id。
答案 3 :(得分:1)
您不能拥有两个具有相同ID的HTML元素。将您的<div>
或select
ID更改为不同。
答案 4 :(得分:1)
这里的问题是你使用与选择控件相同的ID。
ID必须是唯一的。否则将使用第一次出现,在你的情况下 - 是div容器。
因此,对于DIV容器,您的JS变量“selectBox”指向DIV,而不是select控件。
解决方案:将其中一个ID更改为另一个(唯一的)并使用JS代码中的select控件的ID。
<div id="supervisor_div">
<form action="" method="">
<label>Supervisor Alert</label>
<select id="supervisor" onchange="changeFunc()">
<option value=""></option>
<option value="1">Helen</option>
<option value="2">Nancy</option>
<option value="3">Joyce</option>
<option value="4">Bob</option>
<option value="5">Herb</option>
</select>
</form>
</div>