我有两个互斥的OR cfselect,第一个选项为空(未选中)。当在cfselect中选择非空白选项时,使用javascript函数选择另一个cfselect中的空白选项(第一个选项)。然而,在单击某个选项时不会调用javascript函数(使用alert()进行测试)。
function resetBusiness() {
alert("resetBusiness() - Entering ..................."");
var aForm = document.forms[0];
var optDiv = aForm.getElementById("sDiv").value;
alert("optDiv: |" + optDiv + "|");
if (optDiv != "") {
aForm.getElementById('sBus').selectedIndex = 0;
aForm.submit();
}
}
function resetDivision() {
alert("resetDivision() - Entering ..................."");
var aForm = document.forms[0];
var optBus = aForm.getElementById("sBus").value;
alert("optBus: |" + optBus + "|");
if (optBus != "") {
aForm.getElementById('sDiv').selectedIndex = 0;
aForm.submit();
}
}
..。
<cfselect id="sBus" name="sBus" query="qryBus" display="BU" value="BU"
selected="#HDF(attributes.sBus)#" multiple="yes" size="6"
queryPosition="below"
onClick="javascript:resetDivision(this)">
<option></option>
</cfselect>发布于 2013-06-01 07:55:38
@jbabey是对的,你的警报中有太多的引号。尝试更改为以下内容:
alert("Entering resetDivision function...");此外,最好也为表单提供一个id,而不是使用document.forms[0],以防您更改代码并在此表单之上添加另一个表单(如页面顶部的搜索框)。我从没见过form.getElementById()..。
function resetDivision() {
var optBus = document.getElementById("sBus").value;
if (optBus != "") {
document.getElementById('sDiv').selectedIndex = 0;
document.getElementById("form1").submit(); // substitute with actual form id
}
}您的代码还假定元素存在。您可以使您的代码更健壮,并且仅在成功获取对象时才尝试访问该对象的属性:
var optBus = document.getElementById("sBus");
var optBusVal = '';
if (optBus && optBus != 'undefined') { // actually I think you only need the first check
optBusVal = optBus.value;
}https://stackoverflow.com/questions/16864852
复制相似问题