Запуск событий Onclick в Firefox и IE, но не в Chrome
У меня есть следующая функция JavaScript.
<script type="text/javascript">
function showhidefields(value,formobj,epsflag,respflag) {
//alert(epsflag);
if (epsflag==0 && respflag==4) {
document.getElementById("tpnr").style.position = "static";
document.getElementById("tpnr").style.top = "0px";
formobj.tussenPersoonNotext.disabled =false;
formobj.email.disabled =true;
}
</script>
<select name="moduleidval" class="validate['required']">
<option value="">-- Selecteer Proces--</option>
<option onclick="showhidefields(this.value,this.form,'<?php echo 1; ?>');"
value="<?php echo $epsmodules; ?>"><?php echo 'MBO'; ?></option>
</select>
Моя проблема, когда я нажимаю на опцию в случае firefox
или же IE
событие onclick срабатывает, но в случае с chrome оно вообще не срабатывает. Я пытался изменить имя функции, но безуспешно.
заранее спасибо
5 ответов
Элементыoption не запускают событие click во всех браузерах, вам следует избегать полагаться на это. Вместо этого вы можете использовать событие onchange() для выбора. Вы можете использовать что-то вроде этого
<html>
<head>
<script type="text/javascript">
function changeFunc() {
var selectBox = document.getElementById("selectBox");
var selectedValue = selectBox.options[selectBox.selectedIndex].value;
alert(selectedValue);
}
</script>
</head>
<body>
<select id="selectBox" onchange="changeFunc();">
<option value="1">Option #1</option>
<option value="2">Option #2</option>`enter code here`
</select>
</body>`enter code here`
</html>
В вашем случае вы используете как
<form id='myForm' action="#">
<select id='mySelect' name="moduleidval" class="validate['required']" onchange="showhidefields(this.value,this.form,'0');">
<option value="-">-- Selecteer Proces--</option>
<option value="1"> 'Klantprocessen'</option>
</select>
</form>
Конечно, нет click
событие на теге option.
Вы можете слушать onchange
Событие выбора тега.
<!-- HTML -->
<form id='myForm' action="#">
<select id='mySelect' name="moduleidval" class="validate['required']">
<option value="-">-- Selecteer Proces--</option>
<option value="MBO">MBO</option>
</select>
</form>
// JavaScript
document.getElementById('mySelect').onchange = function(){
alert('value:'+this.value);
alert('form id:' + this.form.id);
}
Посмотреть демо здесь
Вы можете передать значение непосредственно в указанную функцию, например:
<select onchange="trig(value);">
Это значение затем может быть использовано в trig
функция.
function trig(val) {
//do foo
alert(val);
}
Коротко и просто.
Рабочая демонстрация в Chrome: http://jsfiddle.net/amarprabhu/9C3VU/
Немногие браузеры не поддерживают событие onclick для опции option. Вот ссылка
так что вы можете пойти на обмен выбора тега.
Проверьте, включен ли JavaScript в вашем chrome.
Select Customize and control Google Chrome to the right of the address bar
From the drop-down menu, select Settings
At the bottom of the page, click Show advanced settings…
Under Privacy, click the Content settings… button
Under the JavaScript heading, select the Allow all sites to run JavaScript radio button