使用匿名函数时,jquery submit()不起作用

lit*_*ito 0 forms jquery

我想使用submit()提交一个表单,当我只使用submit()而没有任何匿名函数时它确实工作正常,问题是当我使用这样的匿名函数然后它停止工作

$('form').submit(function() {
    alert("alert never shows up :( ");
});
Run Code Online (Sandbox Code Playgroud)

这是我的代码:(抱歉混合jQuery和getElementsByTagName,老家伙的错)

var uform = $('#createItem1');
if(uform[0]) {
    // UI's first validation image extension before server-side
    var _validFileExtensions = [".jpg", ".jpeg", ".gif", ".png"];
    var arrInputs = uform[0].getElementsByTagName("input");
    for (var i = 0; i < arrInputs.length; i++) {
        var oInput = arrInputs[i];
        //Checks if image is of valid extension
        if (oInput.type == "file"){
            var sFileName = oInput.value;
            if (sFileName.length > 0) {
                var blnValid = false;
                for (var j = 0; j < _validFileExtensions.length; j++) {
                    var sCurExtension = _validFileExtensions[j];
                    if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {
                        blnValid = true;
                        // this works fine
                        $('#createItem1').submit();
                        break;
                    }
                }

                if (!blnValid) {
                    alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", "));
                    $('a#linkStep1').trigger('click');
                    return false;
                }
            }
        }
    }
}
return false;
Run Code Online (Sandbox Code Playgroud)

同样,一旦我尝试替换当前的submit()这样的东西,它就会停止工作

$('#createItem1').submit(function() {
   alert("something");
});
Run Code Online (Sandbox Code Playgroud)

知道为什么不工作吗?

nnn*_*nnn 5

如果将函数(匿名或其他)传递给定义将在表单提交时运行的处理程序的.submit()方法,但它实际上不会导致表单提交.如果你没有传递参数,.submit() 使得它提交.

如果要定义处理程序并同时提交,则可以执行以下操作:

$('#createItem1').submit(function() {
   alert("something");
}).submit();
Run Code Online (Sandbox Code Playgroud)

.submit()没有参数是一个捷径.trigger("submit").