在Firefox和IE中触发Onclick事件,但在Chrome中没有

时间:2013-12-04 04:46:25

标签: javascript php html google-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>

我的问题是,当firefoxIE onclick事件触发时我点击该选项,但是如果 chrome它根本不会触发。我试过更改功能名称也没有运气。

fiddle

先谢谢

5 个答案:

答案 0 :(得分:3)

当然,选项标签上没有click事件。

您可以收听select标记的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);
}

参见演示here

答案 1 :(得分:2)

选项元素不会在所有浏览器中触发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>

答案 2 :(得分:1)

很少有浏览器不支持选项标记的onclick事件。这是reference enter image description here

所以你可以选择改变选择标签。

答案 3 :(得分:1)

您可以直接在指定的函数中传递值,例如:

<select onchange="trig(value);">

然后可以在trig函数中使用此值。

function trig(val) {
    //do foo
    alert(val);
}

简短而简单。

Chrome中的工作演示:http://jsfiddle.net/amarprabhu/9C3VU/

答案 4 :(得分:-3)

检查您的Chrome中是否启用了javascript。

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