微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

作为JQuery AJAX请求的一部分,提交禁用输入的最佳方式是什么?

参见英文答案 > How to make $.serialize() take into account those disabled :input elements?
我有一个非常复杂的表单,可以在用户输入数据时向用户提供实时验证和反馈。表单的部分可能由于输入的“业务逻辑”形式而被禁用,但服务器端需要知道这些禁用的输入的值,以便对AJAX请求进行一些检查。

我正在使用JQuery序列化整个表单$(form).serialize(),并在我的AJAX请求期间将所有这些数据发送到服务器,但这个序列化的数据将丢失任何被禁用的输入。那么,每个AJAX请求包含所有表单数据(甚至禁用的输入)的最佳方式是什么?

我目前的想法是将一个函数附加到ajaxStart(回调),该函数将创建所有表单输入的disabled属性的客户端哈希映射,启用所有输入,序列化,然后将每个表单的禁用属性设置回原始值。但是这似乎过于复杂,我想要的东西比较简单,不会那么脆弱。

解决方法

尝试这样做以序列化表单:
$(function() {
      $('input[type=button]').click( function() {
          var form = $('form').serialize();
          $('input[disabled]').each( function() {
              form = form + '&' + $(this).attr('name') + '=' + $(this).val();
          });

      });
   });

测试HTML

<form action="/action">
   <input type='text' disabled='disabled' value='hey' id='hey' name='hey' />
   <input type='text' value='ho' id='ho' name='ho' />
   <input type='text' value="hi" id='hi' name='hi' />
   <input type='button' value="Serialize" />
</form>

产量

ho=ho&hi=hi&hey=hey

原文地址:https://www.jb51.cc/jquery/181698.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐