javascript removeChild (this) из input [type = "submit"] onclick прекращает будущее использование form.submit () под firefox - PullRequest
1 голос
/ 10 марта 2010

Я столкнулся с некоторым странным поведением, и я предполагаю ошибку в Firefox при удалении входного элемента отправки из DOM из в событии click.

Следующий код воспроизводит проблему:

<form name="test_form">
<input type="submit" value="remove me" onclick="this.parentNode.removeChild(this);" />
<input type="submit" value="submit normally" />
<input type="button" value="submit via js" onclick="document.test_form.submit();" />
</form>

Воспроизвести:

  • Нажмите "удалить меня"
  • Нажмите «Отправить через JS». Обратите внимание, что форма не отправляется, это проблема.
  • Нажмите «отправить нормально». Обратите внимание, что форма по-прежнему отправляется в обычном режиме.

Похоже, что в Firefox, если вы удалите кнопку отправки из события click, она переводит форму в недопустимое состояние, поэтому любые будущие вызовы form.submit () просто игнорируются. Но это проблема, связанная с javascript, так как обычные кнопки отправки в этой форме по-прежнему работают нормально.

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

Кто-нибудь еще испытывал это, и если да, то дошли ли вы до сути?

Большое спасибо

1 Ответ

0 голосов
/ 10 марта 2010

Похоже, это связано с тем, что вы удаляете узел во время обработки события.
Это действительно похоже на ошибку в Firefox.

Между тем, этот хак, похоже, работает, но задерживает удаление:

<script type="text/javascript">
function delsubmit(el) {
    window.setTimeout(function() {
        el.parentNode.removeChild(el);
    }, 50);

    return false;
}
</script>

<input type="submit" value="remove me" onclick="return delsubmit(this)" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...