2012-07-06 119 views
4

你好专家,我得到一个问题,我需要你的帮助。onClick事件是不是在Safari浏览器中工作,但它在IE/FF/Chrome浏览器/ Opera浏览器工作正常?

我正在使用JavaScript onClick事件它与IE/FF/Chrome浏览器工作良好,但它不适用于Safari浏览器,我浪费了我的2天,但无法解决它,所以我需要你的帮助太急为了我。

这我使用的代码如下:(?右)

heartSelectHandler = { 
    clickCount : 0, 
    action : function(select) 
    { 
     heartSelectHandler.clickCount++; 
     if(heartSelectHandler.clickCount%2 == 0) 
     { 
      selectedValue = select.options[select.selectedIndex].value; 
      heartSelectHandler.check(selectedValue); 
     } 
    }, 
    blur : function() // needed for proper behaviour 
    { 
     if(heartSelectHandler.clickCount%2 != 0) 
     { 
      heartSelectHandler.clickCount--; 
     } 
    }, 
    check : function(value) 
    { 
     alert('Changed! -> ' + value); 
    } 
} 

<select onclick="javascript:heartSelectHandler.action(this);" onblur="javascript:heartSelectHandler.blur()" id="heart" data-role="none"> 
    <?php for ($i = 20; $i <= 150; $i++): ?> 
    <option value="<?php echo $i; ?>"><?php echo $i; ?></option> 
    <?php endfor; ?> 
</select> 
+4

无法格式化你的代码更好一点?这样我们就不必往东行50公里去阅读它。 – 2012-07-06 05:59:58

+0

重新格式化的问题的代码可读性更好.. :) – techfoobar 2012-07-06 06:03:44

+0

尝试删除'的JavaScript:从'上单击事件。只保留函数调用。 – d4rkpr1nc3 2012-07-06 06:12:15

回答

1

使用的onchange代替的onclick,因为这将确保通过键盘完全改变选择也将触发事件如预期。

即使用:代替

onchange="javascript:heartSelectHandler.action(this);" 

onclick="javascript:heartSelectHandler.action(this);" 
+0

的onChange只有在工作的时候会改变我的价值,例如,如果我选择28和一段时间后,我再次点击选择,选择28只那么它将无法工作手段的onChange只有当我改变价值时才会工作。所以我不能使用onChange事件 – 2012-07-06 06:16:03

+0

好的。是的,onchange只会在价值改变时触发。 – techfoobar 2012-07-06 06:19:32

+0

谢谢techfoobar – 2012-07-06 06:20:42

相关问题