Динамическое добавление поля формы HTML с помощью jQuery
Поскольку я не могу использовать div внутри форм, мне интересно, как добавить новое поле в середину формы (и я не могу использовать .append()
здесь) без перезагрузки страницы или перезаписи формы? (используя jQuery)
EDIT:
это HTML:
<form id="form-0" name="0">
<b>what is bla?</b><br>
<input type="radio" name="answerN" value="0"> aaa <br>
<input type="radio" name="answerN" value="1"> bbb <br>
<input type="radio" name="answerN" value="2"> ccc <br>
<input type="radio" name="answerN" value="3"> ddd <br>
//This is where I want to dynamically add the new radio or text line
<input type="submit" value="Submit your answer">
//but HERE is where .append() will put it!
</form>
Ответы
Ответ 1
То, что кажется путающим в этом потоке, - это разница между:
$('.selector').append("<input type='text'/>");
Что добавляет целевой элемент как дочерний элемент .selector.
и
$("<input type='text' />").appendTo('.selector');
Что добавляет целевой элемент как дочерний элемент .selector.
Обратите внимание на то, как позиция целевого элемента и .selector изменяется при использовании разных методов.
Что вы хотите сделать:
$(function() {
// append input control at start of form
$("<input type='text' value='' />")
.attr("id", "myfieldid")
.attr("name", "myfieldid")
.prependTo("#form-0");
// OR
// append input control at end of form
$("<input type='text' value='' />")
.attr("id", "myfieldid")
.attr("name", "myfieldid")
.appendTo("#form-0");
// OR
// see .after() or .before() in the api.jquery.com library
});
Ответ 2
Это добавит новый элемент после поля ввода с идентификатором "пароль".
$(document).ready(function(){
var newInput = $("<input name='new_field' type='text'>");
$('input#password').after(newInput);
});
Не уверен, что это ответит на ваш вопрос.
Ответ 3
Вы можете добавить любой тип HTML с помощью методов типа append
и appendTo
(среди прочих):
jQuery методы манипуляции
Пример:
$('form#someform').append('<input type="text" name="something" id="something" />');
Ответ 4
что-то вроде этого может работать:
<script type="text/javascript">
$(document).ready(function(){
var $input = $("<input name='myField' type='text'>");
$('#section2').append($input);
});
</script>
<form>
<div id="section1"><!-- some controls--></div>
<div id="section2"><!-- for dynamic controls--></div>
</form>
Ответ 5
Кажется, что ошибка с appendTo использует идентификатор набора фреймов, добавляемый к FORM в Chrome.
Поменял тип атрибута непосредственно на div, и он работает.