送信前に jQuery で検証されるフォームに取り組んでいます。フィールドの 1 つはキャプチャです。
アイデアは非常にシンプルです。キャプチャは画像として表示され、隠しフィールドにも保存されます。ユーザーが入力フィールドにキャプチャを入力すると、非表示フィールドの値と等しくなるはずです。これは私が持っている jQuery コードです。
<script>
$(document).ready(function(){
$("#register").validate({
errorElement: 'div', ignore: 'hidden',
rules: {
password: {
required: true
},
password2: {
required: true, equalTo: "#password"
},
agree: {
required: true
},
captcha: {
required: true, equalTo: "#captcha2"
}
},
messages: {
password2: "Please repeat the same password",
captcha: "The captcha you entered is wrong",
agree: "You have to be at least 16 years old and agree to the terms of service"
}
});
});
</script>
フォームの html コードはさらに単純ですが、一部だけを示します。
<p>
<img src='/includes/captcha.php' />
</p>
<p>
<label for="Captcha">Captcha</label>
<em> *</em><input type="text" name="captcha" id="captcha" size="25"
class="require" minlength="5" />
<input type="hidden" name="captcha2" id="captcha2"
value="<?php echo $_SESSION['captcha'];?>" />
これはうまくいくはずです。ただし、問題は、jQuery コードで設定した「入力したキャプチャが間違っています」というエラーが表示され続けることです。コードが機能しない理由を誰か教えてもらえますか?
ところで、隠しフィールドの値を確認したところ、キャプチャと同じなので、うまくいきます
更新: わかりました、ここに奇妙なことがあります。session['captcha'] をエコーすると、隠しフィールドの値とは異なる値が得られます。エコーすると、以前のキャプチャが取得されます。それでは、キャプチャ値が abc だとしましょう。キャプチャ + 非表示フィールドを更新すると、def に変わります。しかし、セッション['captcha']をエコーすると、まだabcが表示されます。