我有两个变量,totalGuess和condensedAnswer。我正在创建一个jQuery click事件,如果totalGuess不等于condensedAnswer,则单击事件将不会发生,并且名为message的div将显示消息“对不起,但您的答案不正确。请重试。”

问题是,if语句中的totalGuess永远不等于condensedAnswer。我试过看到typeof,它们都是字符串。我已经尝试过console.log(totalGuess +“ \ n” + condensedAnswer);并且它们都返回相同的值。我已经尝试对condensedAnswer进行硬编码,并且totalGuess能够等于硬编码的答案。但是,当我尝试将condensedAnswer与硬编码的答案进行比较时,即使condensedAnswer的console.log值相同,也不相等。我没什么错

这是代码片段:

$('.submitGuess').click(function(e){
    var totalGuess = "";
var condensedAnswer = answer.replace(new RegExp(" ","g"), "");
$('.crypto-input').each(function(){
    totalGuess += $(this).val();
    });
// if incorrect guess
if(totalGuess !== condensedAnswer) {
    $('.message').text("Sorry, but your answer is incorrect. Please try again.");
    e.preventDefault();
}
// if user wins, congratulate them and submit the form
else {
    return true;
}
});


如果有帮助,请访问以下页面,只是针对Wordpress的随机测试密码插件:
http://playfuldevotions.com/archives/140

最佳答案

问题与检查无关。问题是您要检查的值具有隐藏字符。但是,您得到的字符串有问题。

简单调试即可显示问题

> escape(totalGuess)
"God%27sMasterpieceMatthew15%3A99Psalms129%3A158"
> escape(condensedAnswer)
"God%27sMasterpieceMatthew15%3A99Psalms129%3A158%00"


它的末尾有一个空字符。

现在看看如何填写答案,您将得到一个带有数字的数组

"071,111,100,039,...49,053,056,"


看看最后我们有一个逗号结尾

当您进行拆分时,这意味着数组的最后一个索引将是"",因此为什么会得到空值。



删除结尾的逗号,它将神奇地起作用。

10-04 10:24