我想使用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");
});
知道为什么不工作?
答案 0 :(得分:5)
如果您将函数(匿名或其他)传递给定义将在提交表单时运行的处理程序的.submit()
method,但它实际上并不会导致表单提交。如果您没有将参数传递给.submit()
使其提交。
如果你想定义一个处理程序并同时提交,你可以这样做:
$('#createItem1').submit(function() {
alert("something");
}).submit();
没有参数的 .submit()
是.trigger("submit")
的快捷方式。
答案 1 :(得分:0)
它不起作用,因为选择器没有有效对象,或者返回的对象不是表单。
答案 2 :(得分:0)
当您将匿名函数传递给submit
方法时,它不会提交表单,但会附加将在提交表单时执行的处理程序。
提交form
只是说。
$('#createItem1').submit();
如果附加了submit
个事件处理程序,它们将自动触发。