【问题标题】:Jquery if/else redirect showing the "else" value when an "if" is true当“if”为真时,Jquery if/else 重定向显示“else”值
【发布时间】:2015-05-05 18:06:45
【问题描述】:

我写了一个 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");
            }
        }
    });
});

提前感谢您的帮助!

【问题讨论】:

  • 您是否尝试在window.location 行之后简单地放置一个return;
  • 为我工作。在此之后您还有其他要调用的内容吗?也许另一个正在处理它的 document.ready??

标签: jquery redirect if-statement textbox


【解决方案1】:

编辑:我完全不解

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

这是我必须使用的原始代码,完全复制:

$(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;
        }
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2014-08-08
    • 2019-04-09
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    相关资源
    最近更新 更多