以下代码适用于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方法?或者我的代码刚刚关闭?
答案 0 :(得分:6)
单击复选框后单击其他位置可能会有效。 IE很奇怪。
可以尝试类似:
$(function () {
if ($.browser.msie) {
$('input:checkbox').click(function () {
this.blur();
this.focus();
});
答案 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);
而不是事件“改变”