IE没有检测到复选框的jquery更改方法

时间:2010-03-31 03:32:01

标签: jquery checkbox internet-explorer

以下代码适用于FF,Safari,Chrome。但IE给了我一些问题。

选中复选框后,我无法让IE检测到它。

$("#checkbox_ID").change(function(){

   if($('#'+$(this).attr("id")).is(':checked'))
   { 
       var value = "1"; 
   }
   else
   { 
       var value = "0"; 
   } 
   alert(value);

   return false;
});

简单地说,我没有像预期的那样获得警报弹出窗口 我甚至用这种方式尝试过:

$("#checkbox_ID").change(function(){

   if( $('#'+$(this).attr("id")'+:checked').attr('checked',false))
   { 
       var value = "1"; 
   } 
   else
   { 
       var value = "0"; 
   } 
   alert(value);

   return false;
});

以下是简单的复选框输入:<input class="prod" type="checkbox" name="checkbox_ID" id="checkbox_ID" value="1"/>

任何人都知道IE是否需要不同的jquery方法?或者我的代码刚刚关闭?

5 个答案:

答案 0 :(得分:6)

单击复选框后单击其他位置可能会有效。 IE很奇怪。

可以尝试类似:

$(function () {
  if ($.browser.msie) {
    $('input:checkbox').click(function () {
      this.blur();
      this.focus();
});

此处有更多信息:http://norman.walsh.name/2009/03/24/jQueryIE

答案 1 :(得分:5)

正如使用IE7及更低版本的sblom所指出的那样,你需要使用该元素模糊才能触发此动作,以后版本的IE和其他浏览器不需要该元素明确地失去焦点,只需更改即可触发此事件(如图所示)在我的下面的例子中。)

我相信你的问题可能是当你超出范围时,你试图访问'value'变量。

$("#checkbox_ID").change(function(){
var value;
if($(this).is(':checked'))
{ 
    value = "1"; 
}
else
{ 
    value = "0"; 
} 
alert(value);

return false; 
});

Here is a working preview,请注意,因为您在函数末尾返回false,它会将复选框重置为其先前的值,因为您已取消了点击的效果。

答案 2 :(得分:1)

更改事件仅在控件失去焦点后值更改时触发。对于复选框,最好连接到click事件。

以下是onchange事件触发时的文档:link text

答案 3 :(得分:1)

您需要使用propertychange事件而不是change事件。请注意,propertychange事件将触发除已选中/未选中之外的其他内容。为了弥补这一点,您必须检查window.event.propertyName(仅适用于IE):

$(':checkbox').bind($.browser.msie ? 'propertychange': 'change', function(e) {
    if (e.type == "change" || (e.type == "propertychange" && window.event.propertyName == "checked")) {
        // your code here
    }
});

答案 4 :(得分:0)

尝试使用

jQuery('#checkbox').click(handleFunc);

而不是事件“改变”

相关问题