【问题标题】:if validation successful hide submit button and show loading image如果验证成功隐藏提交按钮并显示加载图像
【发布时间】:2017-09-06 15:50:45
【问题描述】:

我有一个表单可以通过 mysql php 将数据提交到数据库。我正在使用验证来检查字段是否具有值。现在我想如果提交按钮验证成功,隐藏提交按钮并显示加载图像,直到用户没有进入提交成功页面。

验证码工作正常。但问题在于隐藏提交并显示加载图像。

验证码:

    $('.msf-form form').on('submit', function(e){ 
    $(".loading").show();

    $(".sbmt").hide();
    var return_val = true;
    console.log('test');

    $(this).find('.is_mobile:visible').each(function() {                                       
        if( $(this).val() == "" ) {
            return_val = false;
            $(this).focus().css('border','1px solid #F44336');
            $(".error-messages-mobile").text("Your valid Mobile Number is required ").fadeIn();
        }
        else{
           $(this).css('border','0px solid #F44336');
           $(".error-messages-mobile").empty().fadeOut();
        }
    });

    $(this).find('.is_otp:visible').each(function() {
        if( $(this).val() == "" ) {
            return_val = false;
            $(this).focus().css('border','1px solid #F44336');
            $(".error-messages-otp").text("OTP is required ").fadeIn();
        }
        console.log(return_val);

        if(return_val == true){
            return_val = false;
            var data = {
                countryCode: $('#hiddenCode').val(),
                mobileNumber: $('#hiddenNumber').val(),
                oneTimePassword: $('#oneTimePassword').val()
              };
            $.ajax({
                url: 'test.com',
                type: 'POST',
                data: data,
                success: function (response) {console.log(response);
                  if (response == 'NUMBER VERIFIED SUCCESSFULLY') {
                        $(".error-messages-votp").empty().fadeOut();
                        $('.msf-form form').unbind('submit');
                        $('.msf-form form').submit();

                        return true;

                  }
                  else
                  {
                        return_val = false;
                        $(this).focus().css('border','1px solid #F44336');
                        $(".error-messages-otp").text("Enter valid OTP ").fadeIn();
                  }
                },
                error: function (jqXHR, textStatus, ex) { return_val = false;
                  console.log(textStatus + "," + ex + "," + jqXHR.responseText);
                }
            });
        }
    }); 

    if(!return_val){
        $(".loading").hide();
        $(".sbmt").show(); 
        return return_val;
    } 
});

加载 div 的样式:

代码:

<style>
    .loading{
  display:none;
  color:#FF0000;
}
</style>

Html 和 PHP 表单代码:

我有两个输入手机号码和 OTP。我想如果其中两个有值,然后在单击时隐藏提交按钮并显示加载图像。

<input type="text" name="number" placeholder="Enter Mobile number" id="number" class="is_mobile" ><br />

<input type="hidden" name="country_code" id="country_code" class="is_vcountrycode" value="91" ><br>

<span class="error-messages-mobile" id="error"></span><br>

<div id="verifyOtpForm" >

    <input type="text" name="oneTimePassword" placeholder="Enter OTP" id="oneTimePassword" class="is_otp"><br><br>
    <span class="error-messages-otp" id="error"></span><br>
    <input type="hidden" name="hiddenCode" id="hiddenCode">
    <input type="hidden" name="hiddenNumber" id="hiddenNumber"><br>
</div>
</div>
<button type="submit" class="btn sbmt">Submit</button>
<div class="loading" style="font-size:22px;"><img src="images/loading1.gif"></div>  

【问题讨论】:

  • 您可以在提交到该图像时更改按钮,因此可能在 jQuery 中使用 .hide ,然后在图像上使用 .show 。 IE。您需要创建与下方提交按钮相同的 div,但使用 display:none
  • @LewisSmith 我已经这样做了,您可以在我的问题中查看。但不工作
  • 抱歉,误读了,好吧,我之前也遇到过这个问题,尝试使用您希望它在成功时执行的所有操作创建一个新功能。然后触发成功。不需要,但这应该可以解决问题
  • 另外你应该使用 === 而不是 == 可能会有所帮助
  • @LewisSmith 我没有正确理解您所说的内容,请您用代码解释一下。

标签: javascript php jquery html forms


【解决方案1】:

控制台的输出是什么? - 控制台日志(响应);

【讨论】:

  • 它不隐藏提交按钮并提交数据库中的值并转到下一页。问题不在于验证。它正在验证。但在验证成功时不隐藏提交按钮
  • 如果您有任何疑问,请使用评论。不要使用答案部分来提问。
【解决方案2】:

你必须放

if(!return_val){
    $(".loading").hide();
    $(".sbmt").show(); 
    return return_val;
} 

AJAX成功和错误函数中的代码。

此代码在 AJAX 调用响应之前执行。所以试着把它放在成功和错误块中。

【讨论】:

    【解决方案3】:

    您必须进行以下更改

    1.改变

    <button type="submit" class="btn sbmt">Submit</button>
    

    <button type="button" class="btn sbmt">Submit</button>
    

    2。改变

    $('.msf-form form').on('submit', function(e){ 
    

    $('.msf-form form').on('click', function(e){ 
    

    3.删除

    if(!return_val) {
          $(".loading").hide();
          $(".sbmt").show(); 
          return return_val;
        } 
    

    4.改变你的 Ajax else 条件

    来自

    else {
      return_val = false;
      $(this).focus().css('border','1px solid #F44336');
      $(".error-messages-otp").text("Enter valid OTP ").fadeIn();
    }
    

    else {
      return_val = false;
      $(".loading").hide();
      $(".sbmt").show(); 
      $(this).focus().css('border','1px solid #F44336');
      $(".error-messages-otp").text("Enter valid OTP ").fadeIn();
    }
    

    【讨论】:

    • @kuldeeep Singh 感谢您的回答和支持。我有一个问题如果我在 ajax 上隐藏提交按钮,那么它无法验证名称文本框是否具有价值,那么它将在验证 OTP 时隐藏提交按钮。请建议。我有输入名称的文本框,我也在验证它。
    • 不,我们没有隐藏其他 ajax 上的提交按钮。如果您看到,我们在 else 条件下启用表单按钮。
    • 您现有的显示提交条件将不起作用,因为 ajax 是异步调用。您的条件将在 ajax 调用响应之前执行,因此不会显示加载图像。
    • 但现在它在验证之前隐藏提交按钮并显示加载图像
    • 确定删除 $(".sbmt").hide();从顶部开始并在 ajax 调用之前添加它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多