我有两个变量,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,"
看看最后我们有一个逗号结尾
当您进行拆分时,这意味着数组的最后一个索引将是
""
,因此为什么会得到空值。删除结尾的逗号,它将神奇地起作用。