Форма отказывается отправлять через jQuery

У меня есть следующая форма

<form name="myForm" id="myForm" method="post" enctype="multipart/form-data" action="script.php">

и этот jquery

$(document).ready(function() {

  $('#previewButton').click(function() {
    // Change form's target to be in a new window.
    $('#myForm').attr('target', '_blank');

    /*
     * Create a hidden input field and add it to the form to designate that the
     * action the form is performing is a preview action.
     */
    $('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />'));

    // Submit the form.
    $('#myForm').submit();

    // Change the form's target to be the current page again.
    $('#myForm').attr('target', '');

    /*
     * Remove the hidden input field we just added so that the form can submit
     * normally.
     */
    $('#previewAction').remove();

    return false;
  });

});

У меня есть точно такие же два кода на двух разных страницах. В одном случае, когда я нажимаю ссылку «Предварительный просмотр», форма отправляется в новое пустое окно. На другой странице форма не отправляется, и окно не открывается, когда я нажимаю «Предварительный просмотр».

.click() работает, и я знаю это, потому что я поместил вызов alert() в .click() и получил окно с предупреждением.

Выполнив следующее, я вижу, что .submit() для моей формы НЕ переопределяется где-либо еще:

var submitEvents = $('#myForm').data("events").submit;
jQuery.each(submitEvents, function(key, value) {
  alert(value);
});

Кроме того, я не получаю ошибок Javascript.

И идеи, почему нажатие Preview (видимо) ничего не делает?


person Chad Johnson    schedule 24.02.2010    source источник
comment
Вы прошлись по коду JS, используя что-то вроде FireBug, чтобы посмотреть, не появится ли там что-нибудь?   -  person Peter Loron    schedule 25.02.2010
comment
Возможно, я неправильно использую FireBug, но просмотр Javascript не дал мне никаких подсказок.   -  person Chad Johnson    schedule 25.02.2010


Ответы (3)


Оказывается, была кнопка <input> с идентификатором = 'отправить'. jQuery это не понравилось.

person Chad Johnson    schedule 28.02.2010
comment
Для справки, я столкнулся с той же проблемой с элементом с именем submit и другим идентификатором. - person mdryden; 08.11.2011

может придирки, но:

$('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />'));

Почему вы экранируете ", а также не экранируете " в одной строке? Разве вы не переписали " в ' и забыли о побеге?

а еще target на form для меня что-то новое :)

Изменить:

Возможно, html или другой javascript могли бы дать вам/нам некоторые подсказки, иначе я чувствую себя таким же потерянным, как и вы.

person Adam Kiss    schedule 24.02.2010
comment
О, хороший момент. Странно, это ничего не испортило для другой формы. Без косых черт разницы нет. - person Chad Johnson; 25.02.2010

Попробуйте использовать метод append без $(), например:

$('#myForm').append('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />');

Другое дело, не могли бы вы добавить аддон Firebug к firefox, это отличный инструмент для отладки javascript. https://addons.mozilla.org/en-US/firefox/collection/firebug_addons

person thitemple    schedule 25.02.2010