0

送信前に 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が表示されます。

4

0 に答える 0