ajax コンタクトフォームの検証に問題があります。エラーチェックは少し機能します。間違ったメールアドレスを入力すると、空の名前フィールドも検証されます。さまざまなことを試しましたが、小さな部分が欠けていると思います。私の質問に答えていただければ、変更点を説明していただけますか? 本当に学びたいです!
これは私のコードです(またはこの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();
}