【问题标题】:Chrome checkbox not changingChrome复选框没有改变
【发布时间】:2013-02-18 08:02:40
【问题描述】:

我在表格中有简单的复选框。这是我在代码中看到的复选框标记:

<input type="checkbox" id="iFact123" onchange="submit_status_change(123,$(this).prop('checked'));" >

现在,例如在 Firefox 中,这可以正常工作。在 Chrome 中,会发生以下情况:

  • 单击复选框时,复选框似乎不会更改为选中/未选中。它保持不变。至少在视觉上
  • submit_status_change() 运行正常,如果我重新加载页面,该元素将加载为选中状态(现在是来自数据库的信息)。由于此函数从 $(this).attr('checked')) 获取信息,因此必须至少在发送参数时检查该元素 - 它似乎没有。

现在有人对此类问题有任何想法或经验吗?

如果你认为它与提交功能有关,这里是:

function submit_status_change(id, val){
  //$.post('something.php',{'change_status':id, 'status':val}, function(){}); 
}

更新:attr 更改为 prop

Chrome 现在更改了复选框,至少在视觉上是这样。 onchange 事件似乎没有发生。

火狐:

    TypeError: $(...).prop is not a function
[Break On This Error]   

submit_tech_status(123,$(this).prop('checked'));

UPDATE2:我切断了一些代码。现在提交功能非常清晰。 Firefox 出现prop 错误,chrome 没有打印错误,但不运行提交功能。这与以前不同,chrome中的复选框似乎没有被选中或取消选中,但功能正常。

【问题讨论】:

  • 使用.prop('checked') 代替.attr('checked') 或.is(':checked')。
  • 为什么? .attr('checked') 可能会阻止实际更改?
  • .attr 显示属性的值,.prop 反映属性。阅读stackoverflow.com/questions/5874652/prop-vs-attr的答案
  • 好吧,我试过了,反正问题还是一样。 chrome 不会在视觉上改变任何东西。
  • 因为你的选择器也是错误的。前缀尖锐符号,$('iFact'+id) -> $('#iFact'+id)

标签: jquery google-chrome checkbox


【解决方案1】:

只要写这样的东西:

$("#iFact123").change( function() {
   var c = $(this).prop("checked");
   // do whatever you want with c value
});

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2017-02-06
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多