【问题标题】:jquery checked checkbox IE problemjquery勾选复选框IE问题
【发布时间】:2011-02-01 06:59:56
【问题描述】:

我在验证是否在 Internet Explorer 上使用 jquery 选中了复选框时遇到问题。 这是我正在使用的代码:

if ($('#chkjq_1').attr('checked') == true)

它在 Firefox 或 Chrome 上运行良好,但在 Internet Explorer 7 上,条件始终为 false,因为浏览器以这种方式设置属性:

<input id="chkjq_1" type="checkbox" CHECKED/> IE7

正确的方法如下:(Firefox,Chrome):

<input id="chkjq_1" type="checkbox" checked="checked"/> FF, Chrome, etc

我应该怎么做才能避免在 Internet Explorer 7 上出现这个问题; jquery 中有没有通用的方法来解决这个问题?

提前致谢。

【问题讨论】:

  • 你用的是什么版本的jQuery?
  • 什么负责生成输入标签?这是一个 ASP.NET 服务器控件还是类似的东西?最好关注为什么标签渲染不正确,看看你是否可以解决这个问题;那么 jQuery 应该就可以工作了。
  • lidermin,你的意思是jquery UI 1.7.2,需要jquery 1.3+才能运行;无论如何,您的答案是使用任何 jquery 1.0+
  • 对不起,你是对的,我的意思是 jquery 1.3.2。

标签: jquery


【解决方案1】:

试试这个:

if ($('#chkjq_1').is(':checked'))
{
  // more code
}

【讨论】:

  • 它也适用于我。如果我的 'CHECKED' 在 IE9 中不起作用,我将其更改为 'checked' 并且可以工作。
【解决方案2】:

我唯一能坚持工作的就是这样测试:

if ($('#chkjq_1').is('[CHECKED]'))

当你打开开发者工具时,像 IE 一样在选择器上使用全部大写来呈现它。据我所知,可以跨浏览器工作。 .is(':checked') 不适合我(使用 JQuery 1.7.1)。在多种模式下使用 IE 7 和 IE 8 进行了测试。其他浏览器(Firefox、Safari 测试)似乎并不在意。

【讨论】:

  • 这会测试选中的属性是否存在。但是在 Firefox 中,如果我取消选中一个复选框,is('CHECKED') 仍然是 true。
  • 那是因为你需要is(':CHECKED')
【解决方案3】:

IE中复选框的“更改”事件被奇怪地触发了。

这可以解决为:- 1.) 将输入复选框的 onclick 事件绑定到要触发的所需目标函数 2.) 在目标函数中,通过勾选“checked”属性来检查复选框的状态-

if ($('#chkBox').attr("checked") == "checked"){
      // do something ----or .attr("checked", "checked"); ---for another checkbox
}else{
      // do something else ----or .removeAttr("checked"); ---for another checkbox
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 2010-12-15
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多