onClick事件在Safari中无效,但在IE / FF / Chrome / Opera浏览器中工作正常

时间:2012-07-06 05:57:40

标签: javascript

我正在使用JavaScript onClick事件,它在IE / FF / Chrome浏览器中运行良好,但它不适用于Safari浏览器。

我使用的代码如下:

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>

1 个答案:

答案 0 :(得分:1)

使用onchange而不是onclick,因为这样可以确保纯粹通过键盘对选择的更改也会按预期触发事件(对吗?)。

即。使用方法:

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

而不是:

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