我正在处理一个在提交之前用 jQuery 验证的表单。其中一个字段是验证码。
这个想法很简单,验证码显示为图像并存储在隐藏字段中。当用户在输入字段中输入验证码时,它应该等于隐藏字段的值。这是我拥有的 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。但是当我回显 session['captcha'] 时,我仍然得到 abc。