【问题标题】:jquery .prev() yields undefined [duplicate]jquery .prev() 产生未定义的[重复]
【发布时间】: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-userinput#captcha-real。问答随机生成phpmt_rand()。所以当用户填写 user_answer 字段时,答案应该与它上面的 real_answer 字段匹配

感谢您的帮助

【问题讨论】:

  • 因为#captcha-real 不是#captcha-user 的兄弟
  • 你读过the docs for .prev()吗?它用于 DOM 遍历,找到目标选择器的前一个兄弟...而不是获取先前的值。否则,如果您已经理解这一点,那是因为您的目标选择器之前没有任何兄弟姐妹。

标签: jquery


【解决方案1】:

您不需要使用prev(无论如何您都不会正确使用它)。您的元素有 ID(当然必须是唯一的):

var real_answer = $("#captcha-real").val();

【讨论】:

  • 抱歉编辑了我上面的问题
  • 您有多个具有相同 id(#captcha-real) 的元素?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
相关资源
最近更新 更多