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

时间:2012-02-05 23:12:22

标签: jquery forms

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

$('form').submit(function() {
    alert("alert never shows up :( ");
});

这是我的代码:(抱歉混淆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;

同样,一旦我尝试替换当前的提交(),它就会停止工作

$('#createItem1').submit(function() {
   alert("something");
});

知道为什么不工作?

3 个答案:

答案 0 :(得分:5)

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

如果你想定义一个处理程序并同时提交,你可以这样做:

$('#createItem1').submit(function() {
   alert("something");
}).submit();
没有参数的

.submit().trigger("submit")的快捷方式。

答案 1 :(得分:0)

它不起作用,因为选择器没有有效对象,或者返回的对象不是表单。

答案 2 :(得分:0)

当您将匿名函数传递给submit方法时,它不会提交表单,但会附加将在提交表单时执行的处理程序。

提交form只是说。

$('#createItem1').submit();

如果附加了submit个事件处理程序,它们将自动触发。