我的ajax contactform驗證有問題。錯誤檢查工作一點點。如果我輸入錯誤的電子郵件地址,它也驗證空名稱字段,我嘗試了不同的事情,但我認爲我錯過了一小部分。如果你回答我的問題,可否請你解釋一下這些變化,我真的很想學習!Ajax表單驗證json
這是我的代碼(或看到這個jsBin):
Ajax調用
$('form.ajax').on("keyup", function(e){
e.preventDefault();
var $this = $(this);
data = {};
$this.find('[name]').each(function(index, value){
var $this = $(this),
name = $this.attr('name');
value = $this.val();
data[name] = value;
});
$.ajax({
url : "contact.php",
type: "post",
data: data,
dataType: "json",
success: function(response){
error_check(response);
}
});
});
功能我用它來檢查我的錯誤,並添加錯誤消息
function error_check(arr){
$.each(arr, function(key, value){
var el = $('li.' + key);
if(value == true){
if(el.hasClass('error')){
$(el).removeClass('error')
.children('div.error').remove()
.addClass('validated')
.prepend('<div class="validated"></div>');
}else{
$(el)
.addClass('validated')
.prepend('<div class="validated"></div>');
}
}else if(value == false){
if(el.hasClass('validated')){
$(el).removeClass('validated')
.children('div.validated').remove()
.addClass('error')
.prepend('<div class="error"></div>');
}else{
$(el)
.addClass('error')
.prepend('<div class="error"></div>');
}
}
});
}
這是我的php驗證碼:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$validated = array();
$name = $_POST['name'];
$company = $_POST['company'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$date = $_POST['date'];
/*Ajax validation*/
if(!empty($name) && strlen($name) >= 2){
$validated['name'] = true;
}else{
$validated['name'] = false;
}
if(!empty($email)){
$validate_email = filter_var($email, FILTER_VALIDATE_EMAIL);
if($validate_email){
$validated['email'] = true;
}else{
$validated['email'] = false;
}
}
echo json_encode($validated);
}else{
die();
}
爲什麼您在每次按鍵後驗證而不是在表單提交後驗證的具體原因是什麼? – nietonfir
我已經爲此構建了超時函數,所以我認爲這不是問題。但是我決定在這個例子中擺脫這個功能。 –
這樣做的目的不會讓它變得更好。你爲什麼試圖模仿(以一種非常糟糕的方式)本地解決方案?使用'submit()'。您能否使用您的javascript在[jsBin](http://jsbin.com/)中提供相關的DOM(不要忘記模擬ajax調用)? – nietonfir