IE8单选按钮.change()事件即使没有更改也会触发

时间:2013-08-01 09:32:09

标签: jquery html radio-button

以下HTML和jQuery事件似乎在Internet Explorer中无法正常工作。在IE中,每次单击单选按钮时都会触发事件(即使它是当前选定的单选按钮)。在Chrome中,它运行正常。有关IE修复的任何想法吗?

<input id="system-open" type="radio" name="system-closure" value="false" checked="">Open
<input id="system-close" type="radio" name="system-closure" value="true">Close
$("input[name=system-closure]:radio").change(function () {
    alert($(this).val());
})

1 个答案:

答案 0 :(得分:2)

您可以将先前的值存储在包含元素的数据属性中,以查看选择是否实际已更改。试试这个:

<div class="radio-container">
    <input id="system-open" type="radio" name="system-closure" value="false" checked="">Open
    <input id="system-close" type="radio" name="system-closure" value="true">Close
</div>
$("input[name=system-closure]:radio").change(function () {
    var $radio = $(this);
    var $container = $radio.closest('.radio-container');
    var currentValue = $radio.val();
    var oldValue = $container.data('old-value');

    if (currentValue != oldValue) {
        // the selection has been changed, do something...
        alert($(this).val());
    }

    $container.data('old-value', currentValue);
})