Запуск событий 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
Другие вопросы по тегам