开发者问题收集

防止 Javascript 和 JQuery 中的函数执行

2009-10-09
3367

我有这样一个代码块,当代码发现一个设置为错误的错误属性时,它应该阻止进一步执行,我怎样才能阻止它执行:

$(document).ready(function() {
    $("#SendMessage").click(function(e) {
        var elements = $("#contact-area input:text[error=error]").get();
        for (var i = 0; i < elements.length; i++) {
            if ($(elements[0]).attr("error") == "error") {
                alert("error found");
                // Stop execution of whole function
            }
        }
        $("#loaderImage").show();
        $("#statusMessage").text("Sending, Please wait...");
        window.setTimeout(function() { PageMethods.SendMessage(new Message().fullContent(), onSuccess(), onFailed()) }, "4000");
    });
})

我怎样才能用 JQuery 和 Javascript 做到这一点,也许在 JQuery 中有一个预定义函数可以轻松做到这一点。

2个回答
$(document).ready(function() {
    var flag = false;
    $("#SendMessage").click(function(e) {
        var elements = $("#contact-area input:text[error=error]").get();
        for (var i = 0; i < elements.length; i++) {
            if ($(elements[0]).attr("error") == "error") {
                alert("error found");
                // Stop execution of whole function
                flag = true;
                break;
            }
        }
        if (!flag){
          $("#loaderImage").show();
          $("#statusMessage").text("Sending, Please wait...");
        window.setTimeout(function() { PageMethods.SendMessage(new Message().fullContent(), onSuccess(), onFailed()) }, "4000");
        }
    });
})

这能满足您的需要吗?

Chris Thompson
2009-10-09

发现错误时只需 return;

$(document).ready(function() {
    $("#SendMessage").click(function(e) {
        var elements = $("#contact-area input:text[error=error]").get();
        for (var i = 0; i < elements.length; i++) {
            if ($(elements[0]).attr("error") == "error") {
                alert("error found");
                return;
            }
        }
        $("#loaderImage").show();
        $("#statusMessage").text("Sending, Please wait...");
        window.setTimeout(function() { PageMethods.SendMessage(new Message().fullContent(), onSuccess(), onFailed()) }, "4000");
    });
})
Jonathan Fingland
2009-10-09