Я не могу получить .submit() для jQuery для работы в IE или Firefox, когда передаю форму как текст для объекта jQuery ,
Например, следующий код работает в Chrome и Safari, но в IE и Firefox ничего не происходит - нет ошибок, нет ничего:
$('<form id="frm" action="http://www.stackoverflow.com" method="POST"></form>')
.submit();
ПРИМЕЧАНИЯ: «http://www.stackoverflow.com» выше и пустая форма просто пример. В моем приложении у моей формы есть законный URL-адрес для «action =», который принимает данные POST, которые я указываю как скрытые элементы управления в динамически построенной форме.
Если я вместо этого загружаю сконструированную форму в элемент в html, а затем выполняю $('#frm').submit()
, он работает; однако я бы предпочел не идти этим путем.
Является ли это известным/ожидаемым поведением или я делаю что-то неправильно?
~ ~ ~
В ответ на @DavidThomas, я построения <form>
через .get() вызова обработчика .ashx ASP .NET. Я пытаюсь свести к минимуму воздействие на <form>
и его содержимое.
$.get('./ConstructForm.ashx', function (data) { $(data).submit(); })
.fail(function() { alert('fail!'); });
Я, конечно, приветствуется рекомендации для более безопасного способа сделать это, но это, вероятно, будет предметом другого вопроса.
~ ~ ~
Для чего это стоит, мой подход был изначально основан на следующем: https://stackoverflow.com/a/2054741/1530187
Я пытаюсь сделать это, используя сконструированную строку для объекта JQuery, вместо существующего элемента, в целях сведения к минимуму возможности пользователя проверять форму перед отправкой или после отправки через браузер.
Он должен быть частью DOM, прежде чем он будет работать. В противном случае его просто фрагмент не привязан. – prodigitalson
Это может быть из соображений безопасности или что-то еще, но я думаю, что IE/FFX не будет отправлять формы, которые не находятся в текущем документе. Вы можете просто добавить его к '
', а затем отправить его сразу. –'$ ('
')' * создает * форму; он не добавляет его в документ. Пока он не будет прикреплен, обработчик 'submit()' не будет/не сможет ничего сделать. Он не может быть представлен до тех пор, пока он не будет доступен пользователю. Кроме того, на сервер отправляются только успешные элементы формы; так как ваша форма не содержит каких-либо элементов, вам нечего подавать. Итак ... надеюсь, вы просто выбрали действительно плохой способ представить свой прецедент. Что вы на самом деле получили? –