submit в iframe по событию change
Всем доброго времени суток!
Введение: сейчас создаю форму, которая будет содержать в т.ч. inputы типа file и конечно text. Делаю валидацию через ajax по событию change. Дошел до валидации input типа file и то, что мне казалось ПРОСТО - оказалось для меня сложно: Использую код (см. ниже), который ПО КЛИКУ! submit отправляет форму в iframe, а из него на сервер, где собственно происходит валидация (кстати файл - типа img, поэтому идет проверка типа: картинка ли это, со всеми вытекающими) и в формате json отдает обратный ответ. Задача: поскольку опыта маловато , у меня не получается переделать код, так, чтобы он срабатывал не ПО КЛИКУ! (точнее говоря в моем примере - не тогда, когда нажимается кнопка submit), а по событию CHANGE Далее код: validImg.js -
$(
function(){
var jForm = $( "form:first" );
jForm.submit(
function( objEvent ){
var jThis = $( this );
var strName = ("uploader" + (new Date()).getTime());
var jFrame = $( "<iframe name=\"" + strName + "\" src=\"about:blank\" />" );
jFrame.css( "display", "none" );
jFrame.load(/* данную функцию опускаю, к ней вопросов не имею */);
$( "body:first" ).append( jFrame );
jThis
.attr( "action", "my_page.cfm" )
.attr( "method", "post" )
.attr( "enctype", "multipart/form-data" )
.attr( "encoding", "multipart/form-data" )
.attr( "target", strName )
;
}
);
});
Форма: <form> <input type="file" name="artisan_foto" id="foto" /> <input type="text" name="text1" id="text1" /> <input type="submit" name="submit" id="submit" value="Upload" /> </form> Что я пробовал: 1) читал про .submit() на jquery.com что понял - в случае отсутствия (неуказания) оброботчика работает так - появляется событие submit , которое автоматически ведет к действию submit браузером - в случае указания обработчика работает так - при появлении события submit запускает обработчик, далее НЕ ПОНЯЛ: по завершении обработчика действие submit браузером происходит или нет??? что пробовал - добавлял в $(function(){}); кусок
$('#foto').change(function() {
jForm.submit();
});
результат - в iframе форма не сабмитится мое понимание: получается, что событие submit есть, а самого действия submit нет ИЛИ
$('#foto').change(function() {
$("#submit").trigger('click');
});
результат - происходит обыкновенный сабмит формы мое понимание: нет события submit, поэтому код и не работает, вызывается сразу Метод! 2) в google на http://stackoverflow.com/questions/2...ithout-plugins нашел ответ, что для реализации данной задачи нужно использовать СПЕЦИАЛЬНЫЕ СОБЫТИЯ, но как это сделать? В итоге у меня полная каша в голове по теме "Что происходит 'за кулисами ' в браузере с момента нажатия кнопки submit и до момента отправки формы" Получается что мне нужно по Cобытию CHANGE вызвать Cобытие Submit, в котором уже есть объект "форма с файлом". При этом связка form.submit(handler) + form.submit() не работает. В какой момент .submit(handler) имеет возможность получить объект "форма с файлом", как я понимаю это строка var jThis = $( this ); ведь именно ему мы затем присваеваем атрибуты формы. Сейчас мое представление процесса таково: физическое нажатие кнопки сабмит -> что-то происходит в браузере чего я не понимаю -> появляется объект формы -> этот объект (кстати а ЧТО ЖЕ ЭТО ВСЕ ТАКИ за объект - var jThis = $( this )??? - это objEvent????? а objEvent это и есть EVENT?) доступен form.submit(handler) -> мы ему присваеваем атрибуты, в т.ч. action -> а дальше браузер должен отправить объект по вновь установленному адресу - почему этого не происходит в связке form.submit(handler) + form.submit(), ведь form.submit() это событие + действие Народ объясните pls, что к чему? Что я понимаю не правильно, а что правильно в данной ситуации, помогите советом или кодом! Спасибо!!! |
Отформатируй код, а то читать не охото:)
|
| Часовой пояс GMT +3, время: 17:25. |