2013-08-02 4 views
-4

У меня возникли проблемы с созданием динамически созданной формы. Я пробовал много методов, но форма не отправляется. Вот несколько методов, которые я пробовал.jQuery - невозможно отправить динамически созданную форму

В этом коде tosubmit на самом деле строка json, созданная с использованием JSON.stringify. Я также не получаю никакой ошибки, когда я отлаживаю это, используя Opera Dragonfly. Я вижу, что форма правильно добавлена ​​в DOM.

Метод 1

var frmstr = '<form id="tbl_tmpfrm" method="post" action="/test.php">'; 
frmstr +='<input type="hidden" name="submit" value="true"/><input type="hidden" name="data" value=""/></form>'; 
$('body').append(frmstr); 
$('#tbl_tmpfrm').find('input[name="data"]').val(tosubmit); 
$('#tbl_tmpfrm').submit(); 

Метод 2

var frmstr = '<form id="tbl_tmpfrm" method="post" action="/test.php">'; 
frmstr +='<input type="hidden" name="submit" value="true"/><input type="hidden" name="data" value="'+tosubmit+'"/></form>'; 
$('body').append(frmstr).submit(); 

Я могу успешно представить tosubmit и проверки на стороне сервера, когда я использую ajax. Но я хочу нормальную фиксацию. Что я делаю не так?

Пожалуйста, помогите. Благодарю.

+0

Не используйте имя 'submit' для скрытого поля, это может вызвать проблемы. –

+0

@ Подтвердите любые предложения. Я просто хочу представить 2 значения и не использовать 'ajax'. Я открыт для любого метода. – bansi

+0

Любое другое имя будет сделано. Вы просто не можете использовать submit() в форме, если у вас есть элемент ввода с именем «submit». –

ответ

8

Не используйте имя submit для скрытого поля.

<input type="hidden" name="submit" value="true"/> 

Вы не можете использовать submit() в форме, если у вас есть элемент ввода с этим именем.

3

Для динамически добавляемых элементов, используйте эту форму

$(document).on('submit','#tbl_tmpfrm',function(){}) 

EDIT: Это было не то, что требовалось точно. Попробуйте добавить форму в качестве объекта не струнного

var frmstr = $('<form id="tbl_tmpfrm" method="post" action="/test.php"></form>'); 
$(document).append(frmstr); 
frmstr.append('<input type="hidden" name="submit" value="true"/><input type="hidden" name="data" value="'+tosubmit+'"/>'); 
frmstr.submit(); 

Кроме того, как это было предложено Роландом, не использовать имя представляет для скрытого поля

+0

Это просто добавляет обработчик события в форму, но я хочу просто отправить, как если бы кнопка отправки нажата в старой доброй простой форме HTML. – bansi

+0

О да. Извините за игнорирование проблемы. Попробуйте отредактированный ответ – anu

2

вам нужно использовать «на»; попробуйте этот код здесь:

$("#tbl_tmpfrm").on("submit", function() { 

}); 
+0

и удалите как для jq 1.9 –

+0

, затем замените его на «on», я заново отредактировал мой пост – Momo1987

Смежные вопросы