首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将禁用的输入作为jQuery Ajax请求的一部分提交的最佳方式是什么?

将禁用的输入作为jQuery Ajax请求的一部分提交的最佳方式是什么?
EN

Stack Overflow用户
提问于 2009-05-11 19:37:06
回答 3查看 15.2K关注 0票数 18

我有一个非常复杂的表单,当用户输入数据时,它为使用它的用户提供实时验证和反馈。由于输入的表单“业务逻辑”,表单的某些部分可能会被禁用,但服务器端需要知道这些禁用输入的值,以便在Ajax请求中执行一些检查。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-11 20:02:02

尝试执行以下操作来序列化表单:

代码语言:javascript
复制
   $(function() {
      $('input[type=button]').click( function() {
          var form = $('form').serialize();
          $('input[disabled]').each( function() {
              form = form + '&' + $(this).attr('name') + '=' + $(this).val();
          });

      });
   });

测试HTML

代码语言:javascript
复制
<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>

输出

代码语言:javascript
复制
ho=ho&hi=hi&hey=hey
票数 23
EN

Stack Overflow用户

发布于 2009-05-11 20:04:41

如果您的服务器接受JSON,您可以使用jQuery创建一个JSON对象(使用jQuery select语句包括必要的input标记),然后将其作为对象发送到服务器-更多信息请访问:http://encosia.com/2009/04/07/using-complex-types-to-make-calling-services-less-complex/

基本上,可以这样做:

代码语言:javascript
复制
var formInputs = { };

$('input[type=text]').each(function() {
  formInputs[this.id] = this.value;
});
票数 5
EN

Stack Overflow用户

发布于 2013-11-22 22:25:47

要使用.serilize()通过使用jQuery To Ajax的表单提交将disabled值发送到后端,它是:

代码语言:javascript
复制
<HTML>
    <HEAD>
        <script>
            $(document).ready(function(){
                $("#submid").click(function() { // loginForm is submitted
                    $('#ayyappa').removeAttr('disabled');
                    $.ajax({
                        url: "urls",
                        data:{
                            "sel_opt": $("#ayyappa").attr("value"),
                        }

                    }); // Ajax
                    $("#Number").attr("disabled", "disabled");
                }); // Click
            });
        </script>
    </HEAD>

    <BODY>
        <input type='text' id="ayyappa"  name='ayyappa' value="ayyappa" disabled>
    </BODY>
</HTML>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/849693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档