2017-05-08 33 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