私はCodeigniterを使用しており、利用可能であるかどうかを確認するログイン登録フォームを作成しています。ユーザーはそのIDでログインできます。 だから私はそれのためにAjaxを使用しようとしています。Codeigniterの電子メールの可用性をチェックして、データベースにアクセスせずに、電子メールが利用可能になるまでフォームを無効にする
私はこのAjaxを私のビューに入れました。
$(document).ready(function() {
$("#email").keyup(function() {
var email = $(this).val();
if (email.length > 3) {
$("#result").html('checking...');
$.ajax({
type: 'POST',
url: emailAvailability,
data: { email: email },
success: function(data) {
console.log(data);
$("#result").html(data);
if (data.indexOf('Available')) {
emailAvaliable = 1;
//$('#candidateLogin').removeClass('disabled');
} else {
emailAvaliable = 0;
//$('#candidateLogin').addClass('disabled');
}
}
});
return false;
} else {
$("#result").html('');
}
});
});
私は妥当性検査にパーズリープラグインを使用しています。
$(".formValidationClass").on('click', function (e) {
e.preventDefault;
$(this).parsley();
});
ここでコントローラコード。
public function check_email_availability(){
$data = $this->input->post();
// Now I want to check email is unique or not without going to database.
}
第二の問題は、電子メールが有効な&利用可能になるまで、私は、フォームを無効にしたいです。
送信するフォームを無効にするためにこのスクリプトを試しましたが、動作していないためフォームが送信されました。私は提出しないサーバー側の検証を行っているが、それでもクライアント側を形成しないようにしたい。 これはスクリプトです。
$(".formValidationClass").on('click', function(e) {
e.preventDefault;
$(this).parsley().validate();
console.log('on form click, After validation');
// return false;
});
var emailAvaliable = 0;
$(".formValidationClass").submit(function(event) {
// Validate form fields
if (emailAvaliable == 1) {
console.log('Email Avaliable');
$(this).parsley();
return true;
} else {
console.log('Email not Avaliable');
return false;
}
});
コードを改善することに関するすべての提案が受け入れられます。ありがとう。
{ メールアドレス: メール } – JYoThI
ありがとう、私はそれを更新しましたが、以前のコードも私のためにうまくいきます。 @JYoThI –
*データベースに行くことなく*あなたは電子メールがユニークであるかどうかチェックすることはできません – JYoThI