我写了一个改变下拉列表的警报。它来自下拉列表中选择的特定值。 IE中的警报工作正常,但在Mozilla中它停留片刻并消失。
以下是在下拉列表的onchange
上调用的警报代码。
function psychAlert()
{
var element = document.getElementById("service_help");
for (var x = 0; x <element.options.length; x++) {
if (element.options[x].selected) {
selectedVal = element.options[x].value;
break;
}
}
if(selectedVal == '1514'){
alert("Please call Helpline");
}
}
以下是从onchange调用警报的下拉代码。
<html:select tabindex="<%= tabIndex.getNext()%>" property="serviceDesc" size="1" styleId="service_help" onchange="javascript: psychAlert(); " ></html:option>
html:optionsCollection property="serviceDescList" value="lookupCode" label="shortDescription"/>
<html:select>
答案 0 :(得分:2)
由于您的示例不包含下拉列表中的实际数据,因此我将其清理干净并制作了一个更容易理解的示例,并且应该澄清您遇到的任何问题。此代码已经在IE 8,Firefox和Chrome中进行了测试,并且在所有这三个代码中都可以正常运行。
var example = document.getElementById("dlExample");
example.addEventListener("change", function() {
if (example.value === "3") {
alert("Please call the help desk.");
}
});
<select id="dlExample">
<option value="0">Hi</option>
<option value="1">Bye</option>
<option value="2">Yes</option>
<option value="3">No</option>
</select>
所以看看这段代码。首先,我们简化了您非常复杂和过度的select
。现在你不再在代码中调用onchange,在那里存储值,或者需要不必要的循环。一个简单的select
,包含您的所有选项。
对于javascript,我们首先添加一个简单的EventListener
,然后找到select
getElementsByID
(注意我在select
中设置了ID,这个名字不会起作用)。之后,我们将EventLIstener
设置为基于更改事件。任何更改都发生在该下拉列表中,它将检查并验证下拉值是否是您希望调用警报的任何内容。有时简单就更好了,在这种情况下,更是如此。