【问题标题】:jQuery - recheck checkboxes after clearing them with remoteAttr()jQuery - 使用 removeAttr() 清除复选框后选中复选框
【发布时间】:2012-02-22 08:50:56
【问题描述】:

如果我使用 resetAttr() 重置一堆输入:复选框字段,它工作正常,我无法使用 ajax 响应的数据结合 .attr('checked',' 重新检查这些复选框真的')。

所以脚本的工作流程应该是这样的:

  1. 在 ajax 请求期间获取一些数据。如果成功,请继续。

  2. 打开表单时,重置所有内容,包括复选框。那不适用 document.getElementById("ID").reset(); 一个人。 因此我使用了removeAttr();

  3. 现在使用jQuery('#SomeID').find('input[value="'+SomeObject[key]+'"]').attr('checked','true');将ajax-request的数据放入DOM中

如步骤 3 中所述,在填写表单之前未使用 remoteAttr()。使用 removeAttr() 会导致结果,重新填写复选框将被忽略。

有什么建议吗? 最好的祝福 拉尔夫

更新:我找到了一个解决方案,虽然有点讨厌但有效:

首先我删除选中的属性: jQuery('#form').find('input:checkbox').attr('checked',false);

然后再次重置表单,使用: document.getElementById("such-sets-_viewSuchSets-form").reset();

之后,我使用 jQuery().val() 等用选中的复选框、文本框等重新填写表单。

【问题讨论】:

    标签: jquery forms checkbox


    【解决方案1】:

    为谁正在寻找这个问题的解决方案。 似乎是因为“attr”功能没有更新复选框的状态。

    请尝试更改: $('.someClass').attr("checked", true);

    进入 $('.someClass').prop("checked", true);

    详情请查看官方文档: http://api.jquery.com/prop/

    【讨论】:

      【解决方案2】:

      为什么在打开表单时也不运行它,而是将所有设置为false

      jQuery('#SomeID').find('input[value="'+SomeObject[key]+'"]').attr('checked',false);
      

      【讨论】:

      • 不错的猜测,但它的行为与 removeAttr() 尝试完全相同。删除“checked=true”有效,重新检查不会,复选框保持清晰。但是:在 Firebug 中,它对相关的输入字段说“checked=true”?!这很奇怪,因为在保存表单时,值不会写入数据库。所以这不仅仅是一个显示问题
      • .attr() 引导我走向正确的方向。后跟一个 document.getElementById("WHATSOEVER").reset();它正在完成工作。
      • 我不确定您是否在最后一条评论中解决了这个问题 =) 您可以尝试在 jsfiddle.net 中重现您的问题吗?
      猜你喜欢
      • 1970-01-01
      • 2013-04-17
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 2014-12-31
      • 2014-05-26
      相关资源
      最近更新 更多