2017-05-08 50 views
-1

输入字段验证工作正常,但无法获得ajax提交。我的jQuery代码片段后面的错误在哪里?Ajax表单验证和提交不起作用

$(document).ready(function() { 

    $("#eValidate").live("click", function() { 

    if (!ValidateEmail($("#InputEmail").val())) { 

     $('#InputEmail').val(""); 

     return false; 
    } 
    }); 
    var email = $('#InputEmail').val(); 
    $.ajax({ 
    type: "POST", 
    url: "emailvalidate.php", 
    data: 'iEmail=' + email, 
    success: function(data) { 

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

    } 
    }); 
}); 

function ValidateEmail(email) { 
    var expr = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
    return expr.test(email); 
} 
<form id="nfrm" name="nfrm" action=""> 
    <div style="color:#FFF"> 
    <label for="InputEmail">Input Email</label></div> 
    <div class="form-group form-inline"> 
    <input class="form-control mr-sm-3" id="InputEmail" type="text" placeholder="Type your e-mail id here |" autocomplete="off"><span></span> 
    <button class="btn btn-outline-notify my-2 my-sm-2" id="eValidate" style="background-color: #e5e6e7;" type="submit"><img src="asset/btn1.svg" width="20" height="20" class="d-inline-block mr-sm-1">NOTIFY ME</button> 
    </div> 
</form> 
+0

.live已经废弃了。对,你需要移动到点击 – mplungjan

回答

0

Ajax代码必须活法里写的。代码更正如下。

$(document).ready(function() { 

    $("#eValidate").live("click", function() { 

     if (!ValidateEmail($("#InputEmail").val())) { 

      $('#InputEmail').val(""); 

      return false; 
      } 

    var email = $('#InputEmail').val(); 
     $.ajax({ 
      type: "POST", 
      url: "emailvalidate.php", 
      data:'iEmail='+email, 
      success: function(data){ 

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

      } 
     }); 
}); 

    }); 
+0

@mplungjan不管内部的逻辑如何,主要的问题在这里都很清楚。谢谢。 –

0
  1. 使用。对代替.live What's the difference between `on` and `live` or `bind`?
  2. 招阿贾克斯点击
  3. 测试,如果在所有需要的AJAX
  4. 为什么你不禁根据返回的结果?
$(function() { 
    $("#eValidate").on("click", function() { 
    var email = $.trim($("#InputEmail").val()); 
    if (ValidateEmail(email)) { 
     $.ajax({ 
     type: "POST", 
     url: "emailvalidate.php", 
     data: 'iEmail=' + email, 
     success: function(data) { 
      $("#eValidate").prop('disabled', true); // do you want to disable always? 
      // if not use 
      // $("#eValidate").prop('disabled', data!="OK"); 
     } 
     }); 
    } else { 
     $("#InputEmail").val(""); 
    } 
    }); 
}); 
+0

即使在执行您的代码后,它仍然无法工作 – user3737571

+0

请帮忙,可能会有一些小错误。 – user3737571

+0

}和})是错误的 – mplungjan

0

@mplungjan - 它不工作,甚至实施后您的code.I做这样

function ValidateEmail(email) { 
var expr = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
     return expr.test(email); 
} 
$(function() { 
    $("#eValidate").on("click", function() { 
    var email = $.trim($("#InputEmail").val()); 
    if (ValidateEmail(email)) { 
     $.ajax({ 
     type: "POST", 
     url: "emailvalidate.php", 
     data: 'iEmail=' + email, 
     success: function(data) { 
      alert("Success!"); 

     } 
     }); 
    }); 
    else { 
     $("#InputEmail").val(""); 

    } 
}); 
+0

AGAIN - 请不要使用评论的答案,请删除此内容并更新您的问题 – mplungjan

+0

您缺少结尾}); – mplungjan