【问题标题】:Best method for submitting disabled form fields in jQuery?在 jQuery 中提交禁用表单字段的最佳方法?
【发布时间】:2012-02-09 22:07:55
【问题描述】:

似乎有几种方法可以在 jQuery 中提交(POST)禁用的表单字段:

  • 有一个在输入更改时更改的隐藏字段,并提交该字段
  • 提交时手动附加键/值对
  • 在服务器端恢复值(仅当值不会改变时)

我想知道哪个(如果有)被认为是提交禁用表单字段的最佳实践。显然readOnly 是可用时的最佳选择,但我有一些复选框,即使它们被禁用(由于业务逻辑),我也需要提交它们。我意识到这不是一个理想的情况,但在 Web 开发中很少出现这种情况。

是否有提交禁用表单元素的最佳实践?

【问题讨论】:

  • 不应提交禁用的表单元素。正确的方法是在提交时创建隐藏输入。这是 HTML 文档:w3.org/TR/html4/interact/forms.html#successful-controls
  • @Dave 所以你是说选项 1 是最好的选择?这也是我倾向于的。另外,感谢您的文档。
  • @GrailsGuy 关于你的第一个选项,如果你有一个禁用的表单字段,为什么输入会改变?

标签: jquery html post submit


【解决方案1】:

最好的选择是将输入设置为只读 - 为仅返回 false 的复选框创建单击事件,并更改其背景颜色。

没有最佳实践,但需要最少的捏造。

【讨论】:

    【解决方案2】:

    第四个解决方案是在提交表单之前启用复选框:

    $("form").submit(function() {
        $("input:checkbox", this).prop("disabled", false);
    });
    

    如果您不想重新启用所有复选框,可以使用更复杂的选择器。

    【讨论】:

      【解决方案3】:

      如果需要发布所有或某些禁用的输入,还有另一种方法:

      1. Step1:给类名命名(例如mod)。
      2. Step2: onSubmit,按照下面的例子启用所有这些字段:

        $("input[class=mod]").removeAttr('disabled');

      3. 第三步:发布数据

      4. 第 4 步:按照以下示例再次禁用这些字段(如果需要):

        $("input[class=mod]").attr('disabled="disabled"');

      【讨论】:

        猜你喜欢
        • 2011-12-14
        • 2013-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 2015-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多