【问题标题】:Disable form inputs after ajax submissionajax提交后禁用表单输入
【发布时间】:2013-05-19 14:03:09
【问题描述】:

我有一个通过 Ajax 提交的表单。用户发送表单后,显示表单已发送成功的文本更改,然后显示已填写的表单。我想显示表单,但我不希望他们重新提交表单,所以我想禁用输入以及提交按钮。我尝试在 ajax 脚本中添加:$('#submit_btn').className +=" disabled",但它只是让页面刷新而没有提交任何内容。

ajax脚本如下:

    $(function() {
  $('.error').hide();
  $('input.text-input').css({backgroundColor:"#FFFFFF"});
  $('input.text-input').focus(function(){
    $(this).css({backgroundColor:"#FFDDAA"});
  });
  $('input.text-input').blur(function(){
    $(this).css({backgroundColor:"#FFFFFF"});
  });

  $(".button").click(function() {
        // validate and process form
        // first hide any error messages
    $('.error').hide();

        var name = $("input#name").val();
        var email = $("inputemail").val();
        var phone = $("inputphone").val();
        var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;
        //alert (dataString);return false;

        $.ajax({
      type: "POST",
      url: "http://www.green-panda.com/website/panda/webParts/contact-form.php",
      data: dataString,
      success: function() {
        $('#myModalLabel').html("<h3 class='text-success' id='myModalLabel'>Contact Form Submitted!</h3>")
        $('#myModalSmall').html("<p class='muted'>Your submiessions are below. We will be contacting you soon, you may now close this window.</p>")
        $('#submit_btn').className +=" disabled"
        .hide()
        .fadeIn(1500, function() {
          $('#message').append("<i class='icon-ok icon-white'></i>");
        });
      }
     });
    return false;
    });
});
runOnLoad(function(){
  $("input#name").select().focus();
});

成功提交表单后,我怎么可能禁用输入和按钮?

http://jsfiddle.net/gY9xS/

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    其实它比你想要做的简单很多,你不需要禁用输入,只需在ajax请求后取消提交即可:

    $('form').submit(function(){
        return false;
    });
    

    将其放入 ajax 请求的成功处理程序中。

    如果你想禁用提交按钮,替换这个错误的东西:

    $('#submit_btn').className +=" disabled"
    

    与:

    $('#submit_btn').prop("disabled", true);
    

    【讨论】:

    • 我会尽快接受这个答案。但是,$('#submit_btn).prop("disabled", true); 仍然会导致页面刷新。我接受答案是因为您的答案的第一部分实际上确实阻止了多个数据库提交。
    • 一定是其他原因导致页面刷新,设置类或属性不会这样做。
    • @user,您错误地复制了代码:您的选择器中缺少右单引号:$('#submit_btn).prop("disabled", true);,就在submit_btn 之后。祝你好运。
    【解决方案2】:

    在我的应用程序中,我只是禁用了提交按钮并显示了一些进度消息

        function submitForm(formObj) {
    
            // Validate form
            // if (formObj.email.value === '') {
            //     alert('Please enter a email');
            //     return false;
            // }
    
            formObj.submit.disabled = true;
            formObj.submit.value = 'Log In...';
            return true;
        }
    
    
         <form class="form-login" accept-charset="UTF-8" 
          method="POST" action="/login"   onsubmit="return submitForm(this);">
          ......
          <input type="submit" id="login-submit" name="submit" value="Log In">
          </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 2011-01-26
      相关资源
      最近更新 更多