Клонированная форма submit не работает с jQuery [duplicate]

В то время как обещания и обратные вызовы хорошо работают во многих ситуациях, боль в задней части выражает нечто вроде:

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

212
задан trejder 16 December 2014 в 12:23
поделиться

12 ответов

submit не является функцией

означает, что вы назвали вашу кнопку отправки или какой-либо другой элемент submit. Переименуйте кнопку в btnSubmit, и ваш звонок будет волшебным образом работать.

Когда вы называете кнопку submit, вы переопределяете функцию submit() в форме.

581
ответ дан Stefan van den Akker 3 September 2018 в 16:30
поделиться

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

1
ответ дан aeid 3 September 2018 в 16:30
поделиться
<form action="product.php" method="post" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">

document.getElementById("submit_value").onclick = submitAction;

function submitAction()
{
    document.getElementById("frmProduct").submit();
    return false;
}
</script>

EDIT: я случайно поменял идентификатор вокруг

10
ответ дан Chad Grant 3 September 2018 в 16:30
поделиться

Вы можете попробовать

<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input onclick="submitAction(this)" id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">
function submitAction(element)
{
    element.form.submit();
}
</script>

У вас нет более одной формы с тем же именем?

-1
ответ дан Fabien Ménager 3 September 2018 в 16:30
поделиться

Убедитесь, что нет другой формы с тем же именем и убедитесь, что в форме нет имени = "submit" или id = "submit".

5
ответ дан gopeca 3 September 2018 в 16:30
поделиться

Использовать getElementById:

document.getElementById ('frmProduct').submit ()
-1
ответ дан Ilya Birman 3 September 2018 в 16:30
поделиться

В этой теме уже много ответов, но тот, который лучше всего работал (и простейший - одна строка!) для меня, был модификацией комментария Нила Э. Пирсона от 21 апреля 2013 года:

< blockquote>

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

Мое изменение в его методе, и что сработало для меня:

document.createElement('form').submit.call(document.getElementById(frmProduct));

1
ответ дан jlemley 3 September 2018 в 16:30
поделиться

Решение для меня заключалось в том, чтобы установить атрибут «form» кнопки

<form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form>

или js:

YOURFORMOBJ.getElementsByTagName("button")[0].setAttribute("form", "form_id_name");
YOURFORMOBJ.submit();
0
ответ дан ProtonIonNeutron 3 September 2018 в 16:30
поделиться

У меня была такая же проблема, когда я создавал приложение MVC, используя мастер-страницы. Пробовал искать элемент с 'submit' как имена, упомянутые выше, но это было не так.

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

Чтобы обойти это, я позволю кнопке дескриптор, который будет использовать объект формы :

onclick="return SubmitForm(this.form)"

и с js:

function SubmitForm(frm) {
    frm.submit();
}
4
ответ дан Quangahh 3 September 2018 в 16:30
поделиться

Возможные решения - 1. Убедитесь, что у вас нет другого элемента с именем / id как submit. 2. Попробуйте вызвать функцию как onClick = "return submitAction();" 3. document.getElementById("form-name").submit();

1
ответ дан Ramki 3 September 2018 в 16:30
поделиться

Я использовал

var enviar = document.getElementById("enviar");
enviar.type = "submit"; 

Просто потому, что все остальное не работало.

0
ответ дан Ryan Bemrose 3 September 2018 в 16:30
поделиться

Если у вас нет возможности изменить name="submit", вы также можете отправить форму следующим образом:

function submitForm(form) {
    var submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}
3
ответ дан Terbiy 3 September 2018 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: