【发布时间】: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