jquery submit () не работает при использовании анонимной функции - PullRequest
0 голосов
/ 06 февраля 2012

Я хочу отправить форму с помощью 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;

Опять же, как только я пытаюсь заменить текущий submit () на что-то вроде этого, он перестает работать

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

Есть идеи, почему не работает?

Ответы [ 3 ]

5 голосов
/ 06 февраля 2012

Если вы передаете функцию (анонимную или иную) методу .submit() , который определяет обработчик, который будет запускаться при отправке формы, но фактически не заставляет форму отправлять,Если вы не передаете параметры .submit() , то заставляет его отправлять.

Если вы хотите определить обработчик и отправить одновременно, вы можете сделать это:

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

.submit() без параметров является ярлыком для .trigger("submit").

0 голосов
/ 06 февраля 2012

Когда вы передаете анонимную функцию методу submit, она не будет отправлять форму, но прикрепит обработчик, который будет выполняться при отправке формы.

Чтобы передать form, просто скажите.

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

Если подключены какие-либо обработчики событий submit, они будут срабатывать автоматически.

0 голосов
/ 06 февраля 2012

Это не работает, потому что либо нет допустимого объекта для селектора, либо возвращаемые объекты не являются формами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...