Форма не будет отправлена, если используется .remove ()? - PullRequest
7 голосов
/ 14 июня 2011

У меня есть проблемы с Firefox, jQuery или с обоими.Операционная система - Windows 7, Firefox - версия 4.0.1, а jQuery - от 1,5 до 1,6.

В основном у меня есть форма с элементом button, к которой прикреплено событие click через jQuery, которое удаляетближайший родительский элемент кнопки div.Все это прекрасно работает.

Теперь проблема возникает, когда вы пытаетесь отправить форму после выполнения вышеупомянутого действия.Chrome, IE, Opera и Safari отправляют форму в порядке.С другой стороны, Firefox отказывается отправлять форму.

Я даже пробовал $("form").submit(); в Firebug безрезультатно.

Вот тест на jsFiddle , просто нажмите кнопку -, а затем submit в Firefox, чтобы понять, что я имею в виду.

Любая помощь по этому вопросу очень ценится!

Редактировать: Мне нужно иметь возможность отправить форму через событие Javascript / jQuery, прикрепленное к кнопке за пределами элемента form.

Ответы [ 4 ]

8 голосов
/ 20 сентября 2011

Я думаю, что у меня есть окончательное решение этой проблемы.Последние пару дней я боролся с этим странным поведением и, наконец, наткнулся на эту тему и эту , которая мне очень помогла .. =))

Элемент кнопки имеетАтрибут 'type', который установлен по умолчанию как 'submit' почти во всех браузерах (кроме IE).

Проблема, похоже, связана с тем, что мы удаляем узелпри обработке события submit и, следовательно, прерывании события submit формы ...

Таким образом, добавление type = "button" к элементу button фактически решит эту проблему.

Здесьпример рабочего кода jsFiddle.

5 голосов
/ 14 июня 2011

Понятия не имею почему это так, но если вы замените:

<button name="test">-</button>

с:

<input type="button" value="-" name="test" />

и используйте $("input[name=test]") вместо $("button[name=test]"), тогда это, кажется, работает.

Вы можете видеть, как это работает в этой скрипке .

0 голосов
/ 11 сентября 2013

Ответ "paic_citron" правильный, но, поскольку вы выполняете "POST" через Ajax, вы можете заменить эту кнопку:

<button name="test">-</button>

с гиперссылкой и немного CSS:

<a href="#" class="bnt btn-warning" name="test">
   <i class="icon-remove icon-white"></i>
</a>

Здесь работает jsFiddle

0 голосов
/ 14 июня 2011

попробуйте использовать это вместо:

<input type="submit" value="submit" />

, если вы поставите его перед тегом, он автоматически отправит форму.

<!DOCTYPE html>
<head>
    <title>Firefox/jQuery Submit Bug?</title>
</head>
<body>
    <form method="post" action="index.php" id="fform">
        <div>
            <input type="text" name="foo" value="bar" />
            <button name="test">-</button>
        </div>
    <input type="submit" value="submit" />
    </form>
</body>

...