私はjquery検証プラグインでこれを成し遂げようとしてきました.私が見つけたほとんどすべての答えを試しました.
しかし、どれもうまくいかなかったので、自分でスクリプトを書きましたが、それでもうまくいきませんでした:/
問題 : ユーザー自身の電子メールが原因で電子メールの重複チェックが停止する
私がしたことは:
各要素に関数をバインドする関数を EmailValid クラスで書きました。そのバインドされた関数は、値がデフォルト値であるかどうかをチェックし、そうであればリモート ルールを削除し、そうでなければリモート ルールを追加します。その「デフォルト値チェック機能」もドキュメントレディ状態で実行しています。
<input type="hidden" id="Email_default" value="<?php echo $val; ?>" />
<input type="textbox" class="emailValid" id="Email" name="Email" value="<?php echo $val; ?>" /></td>
<script>
$(document).ready(function()
{
$(".emailValid").each(
function()
{
rules.rules[$(this).attr("id")]=
{
required: true,
email: true,
remote:"<?php echo base_url(); ?>home/checkmail"
};
rules.messages[$(this).attr("id")]=
{
required:"Please enter a valid email address",
email:"Please enter a valid email address",
remote:"This email address is already registered"
};
$("#editForm").validate(rules);
setRemoteValidation(this);
$(this).change(
function()
{
setRemoteValidation(this);
});
});
});
var rules={
rules:{},
messages:{}
};
function setRemoteValidation(el)
{
if($("#"+$(el).attr("id")+"_default").val()!=$(el).val())
{
$(el).rules("add", {
rules: {
required: true,
email: true,
remote:"<?php echo base_url(); ?>home/checkmail"
},
messages: {
required:"Please enter a valid email address",
email:"Please enter a valid email address",
remote:"This email address is already registered"
}
});
}
else
{
$(el).rules("remove","remote");
}
}
</script>