【发布时间】:2014-12-07 17:54:10
【问题描述】:
之前有人问过这个问题,但给出的答案并不能帮助我弄清楚为什么以下代码不起作用:
$.fn.humanCheck = function(){
var user_answer = this.val();
var real_answer = this.prev("#captcha-real").val();
alert(user_answer + " or " + real_answer);
if(real_answer != user_answer || user_answer === ""){
this.val("");
$('span#required').text('To prove that you are human, please provide a valid answer above');
}
return this;
};
变量 real_answer 产生“未定义”,为什么?
这里是完整代码:http://jsfiddle.net/rj32ay37/11/
这里的问题是我在同一页面上有 7 个表单,它们都使用相同的验证码表单组。所以页面上有多个input#captcha-user和input#captcha-real。问答随机生成phpmt_rand()。所以当用户填写 user_answer 字段时,答案应该与它上面的 real_answer 字段匹配
感谢您的帮助
【问题讨论】:
-
因为
#captcha-real不是#captcha-user的兄弟 -
你读过the docs for
.prev()吗?它用于 DOM 遍历,找到目标选择器的前一个兄弟...而不是获取先前的值。否则,如果您已经理解这一点,那是因为您的目标选择器之前没有任何兄弟姐妹。
标签: jquery