当“if”为真时,Jquery if / else重定向显示“else”值

时间:2015-05-05 18:06:46

标签: jquery redirect if-statement textbox

我写了一个jquery if/else来检查textbox的值,如果等于一个单词,它将重定向到url - 否则它会更改值textbox到“try again”。发生的事情是当if值为true且重定向发生时,我可以看到在重定向发生之前,文本框中会快速弹出else值。

这就是我所拥有的:

$(document).ready(function() {
    $('#passphrase').focus();
    $('#passphrase').keyup(function(e) {

        if (e.which === 13) {

            if ($('#passphrase').val() == "marina heights") {
                window.location = "marina heights/index.html";
            }

            else {
                $('#passphrase').val("try again");
            }
        }
    });
});

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

编辑:我完全不解

在下面发布我的答案之后,我可以在你的问题中看到另一个代码,而不是我回答的问题!而且我看不到任何“编辑”提及。不明白发生了什么......

以下是我必须使用的原始代码,完全转载:

$(document).ready(function() {
    $('#passphrase').focus();
    $('#passphrase').keyup(function(e) {

if (e.which === 13) {

if ($('#passphrase').val() == "marina heights") {
    window.location = "marina heights/index.html";
}
if ($('#passphrase').val() == "BRI") {
    window.location = "http://www.google.com";
}
else {
    $('#passphrase').val("try again");
}
}
});
});

这是严格正常的,至少在您输入“码头高度”时。

因为第一个if你没有放置任何else,所以继续使用它下面的代码:在浏览器实现渲染来自新window.location之前的代码之前时间足以执行下一个if,这不是真的,导致显示“再试一次”。

键入“BRI”时不会发生这种情况。

我建议你只使用switch()来解决这类问题,特别是当机会存在时,最后的实例会有超过2个已知位置。

因此,您也可以不为$('#passphrase').val()重复jQuery工作。

所以你可以这样写:

$(document).ready(function() {
    var location='',
        passphrase = $('#passphrase');
    passphrase[0].focus();
    passphrase.keyup(function(e) {
        if (e.which === 13) {
            switch(passphrase.val()) {
                case "marina heights":
                    location = "marina heights/index.html";
                    break;
                case "BRI":
                    location = "http://www.google.com";
                    break;
                default:
                    passphrase.val("try again");
                    return false;
            }
            window.location = location;
        }
    });
});