<html>
<title>
</title>
<head>
<link rel="stylesheet" href="new_2.css" type="text/css"/>
<script src="jquery-1.10.2.min.js"></script>
<script>
function AddingTextBoxes() {
var NumOfText = $("#NumOfTextBoxes").val();
$('#NewlyCreatedSelectBoxes').empty();
for (i = 1; i <= NumOfText; i++) {
var ipBoxName = "MyInput" + i;
var $div = $('<div/>').addClass('row jsRow');
$('<input/>').attr('type', 'text')
.attr('name', 'textbx[]')
.attr('id', 'TxtBx_' + i)
.attr('value', i)
.addClass('txtbx')
.appendTo($div);
$('<input/>').attr('type', 'text')
.attr('name', 'textbx[]')
.addClass('txtbx2')
.appendTo($div);
$('<select/>').attr('id', 'SelectOption_' + i)
.append( $('<option/>').text('Text_Box') )
.append( $('<option/>').text('Text_Area') )
.append( $('<option/>').text('Radio_Button') )
.addClass('selectbx')
.appendTo($div);
$('<button/>').attr('id', 'Child_Btn_' + i)
.attr('value', 'B')
.text('Click for child selections')
.on('click', ChildTxtBoxes)
.appendTo($div);
$('<div/>').addClass('BtnSet').appendTo($div);
$div.appendTo($('#NewlyCreatedSelectBoxes'));
}
return false;
}
function ChildTxtBoxes() {
var $this = $(this);
var $BtnSet = $this.closest('div').find('.BtnSet');
var idBase = 'TxtID_' + $this.attr('id').split('_').slice(-1) + '_';
var retVal = prompt("Enter the number of textboxes need to add");
console.log($BtnSet);
$BtnSet.empty();
for (i = 1; i <= retVal; i++) {
$('<input/>').attr('id', idBase + i)
.attr('type', 'text')
.attr('name', 'textbx[]')
.appendTo($('<div/>').appendTo($BtnSet));
}
alert("AAAAAAAAAAAAAAA");
}
</script>
</head>
<body>
<form >
<div id="PHPForms" >
<!--Designing PHP forms dynamically-->
<label>Form Heading</label><input type="text"/><br><br>
<input id="NumOfTextBoxes" type="text" value="0"></input>
<button id="addem" onclick="return AddingTextBoxes()">Add Textboxes</button>
<div id="NewlyCreatedSelectBoxes">
</div>
<div id='BtnSet'></div></div>
</form>
</body>
</html>
在此示例中,一旦我click
单击“单击以选择子项”按钮,它就会完美打印出我不使用$('#BtnSet').empty();
method时得到的文本框数量。但是,一旦我在弹出文本框中重新输入了另一个值,它就会打印文本框,而不会清空上一组文本框。如果我使用打印,$('#BtnSet').empty();
它将分配任何空间,但不会打印任何内容。那么,为了使功能完美地工作,我应该做哪些更改?
问题的部分原因在于此逻辑:
#BtnSet
但<br>
元素仍将保留您可以通过将每一行包装在一个包含元素中,并在元素上使用其他标记(而不只是ID)进行选择,从而进行大量清理。
我也建议删除所有
和<br>
是你正在使用的定位和使用CSS来代替。
我相信此更新代码将完成您想做的事情,而不会过多更改原始标记和代码:
function AddingTextBoxes() {
var NumOfText = $("#NumOfTextBoxes").val();
$('#NewlyCreatedSelectBoxes').empty();
for (i = 1; i <= NumOfText; i++) {
var ipBoxName = "MyInput" + i;
// Wrap your row in a containing div with a class of 'jsRow'
var $div = $('<div/>').addClass('jsRow');
var txtBoxAutoNumbering = "<input type='text' name='textbx[]' id='TxtBx" + i + "' style='width:50px;' value=" + i + " /> ";
$div.append(txtBoxAutoNumbering);
var txtBox = "<input type='text' name='textbx[]'/> "
$div.append(txtBox);
var Select_SelectionOptions = "<select id='SelectOption'><option>Text_Box</option><option>Text_Area</option><option>Radio_Button</option></select> ";
$div.append(Select_SelectionOptions);
var Select_For_Multiple_Choices = "<button type='button' onclick='ChildTxtBoxes(this)' id='Child_Btn" + i + "' value='B'>Click for child selections</button><br>";
$div.append(Select_For_Multiple_Choices);
$div.appendTo($('#NewlyCreatedSelectBoxes'));
}
return false;
}
function ChildTxtBoxes(item) {
// Use nextUntil to remove any divs with class `BtnSet` after it
$(item).nextUntil('.jsRow').remove();
var retVal = prompt("Enter the number of textboxes need to add");
for (i = 1; i <= retVal; i++) {
$(item).after("<div class='BtnSet' i><input id='TxtID" + i + "' type='text' name='textbx[]'/></div>");
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句