2012-01-13 97 views
7

似乎有是几种方式提交(POST)jQuery中禁用的表单字段:在jQuery中提交禁用表单域的最佳方法?

  • 有一个隐藏字段,改变输入更改时,并提交
  • 手动附加于键/值对在服务器端(仅如果不是预期值改变)提交
  • 还原值

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

是否有一个最佳做法提交禁用的表单元素呢?

+2

禁用的表单元素不应该被提交。正确的做法是在提交时创建隐藏的输入。这里的HTML文档:http://www.w3.org/TR/html4/interact/forms.html#successful-controls – Dave 2012-01-13 18:05:11

+0

@戴夫所以你说的选项1是最好的选择?这也是我所倾向的。另外,感谢您的文档。 – Igor 2012-01-13 18:06:02

+0

@GrailsGuy关于你的第一个选择,如果你有一个禁用的表单域,为什么输入会改变? – 2012-05-09 08:59:56

回答

7

最好的办法是使输入只读 - 创建,仅仅返回false复选框,单击事件,并改变他们的背景颜色。

没有最好的做法,而是一个需要最少捏造。

5

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

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

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

0

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

  1. 第一步:给一个类别名称的域名(如MOD)。
  2. 步骤2:的onSubmit,启用所有以下下面的例子中的那些字段:

    $( “输入[类= MOD]”)removeAttr( '禁用');

  3. 步骤3:邮政数据

  4. 步骤4:再次禁用这些字段(如果需要)按照下面的例子:

    $( “输入[类= MOD]”)ATTR('禁用= “禁用”');