Я следую этой ссылке
для добавления динамических текстовых полей. Но моя проблема заключается в том, что когда я вставляю значения во второе текстовое поле и затем нажимаю кнопку для следующего текстового поля, значения во втором поле стираются. Поэтому я не могу использовать форму отправки. Есть ли способ исправить это?
HTML
<table style="width:500px;height:auto;">
<tr>
<th>Code-1</th>
<td><input type="text" name="code1" id="code"></td><td><input type="button" value="Add New Code" onClick="insert()"></td>
</tr>
<tr>
<th>Custom Markup-1</th><td>
<input type="text" name="markup1" id="markup"></td></tr>
<tr><th>Vendor-1</th><td>
<select id="v" name="v1">
<option value="0">Please Select..</option>
<?
while($v= mysql_fetch_array($vendor))
{
echo "<option value=".$v['id'].">".$v['name']."</option>";
}
?>
</select></td>
</tr>
</table>
JS
<script language="javascript">
var i = 1;
function insert()
{
new_div.innerHTML = new_div.innerHTML +"<tr><th>Code-"+(i+1)+"</th><td><input type='text' id='code"+(i+1)+"' name='code"+(i+1)+"'></td></tr>";
new_div.innerHTML = new_div.innerHTML +"<tr><th>Custom Markup-"+(i+1)+"</th><td><input type='text' name='markup"+(i+1)+"'/></td></tr>";
new_div.innerHTML = new_div.innerHTML +"<tr><th>Vendor-"+(i+1)+"</th><td><select id='v'+i name='v"+(i+1)+"'><option value='0'>Please Select..</option><?php while($v= mysql_fetch_array($vendorInfo)){?><option value='<?php echo $v['id']; ?>'><?php echo $v['name']; ?></option><?php }?></select></td></tr>";
new_div.innerHTML = new_div.innerHTML +"<tr><td><hr></td><td><hr></td></tr>";
//document.getElementById('code2').value=document.getElementById('code2').value;
i++;
}
</script>
Попробуйте это:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
var txtBId=1;
function addTB(){
var div=document.getElementById("tbSet");
var txt=document.createElement("input");
txt.setAttribute("type","text");
txt.setAttribute("id","tb"+(txtBId++));
// div.innerHTML=div.innerHTML +"<br>"; <------------------
var br=document.createElement("br");
div.appendChild(br);
div.appendChild(txt);
}
</script>
</head>
<body>
<form id="myform">
<div id="tbSet">
</div>
<input type="button" value="New TextBox" onclick="addTB();">
<input type="submit" value="Submit">
</form>
</body>
</html>
Не добавлять текстовое поле по innerHtml ,. Если вы добавите его, после удаления трех данных. Сделайте это bu createElement, а затем добавьте его.
function addTB(){
var div=document.getElementById("tbSet");
var txt=document.createElement("input");
txt.setAttribute("type","text");
txt.setAttribute("id","tb"+(txtBId++));
var br=document.createElement("br");
div.appendChild(br);
div.appendChild(txt);
}
Для раскрывающегося списка:
var slId=1;
function options(name,value){
var o=document.createElement("option");
o.setAttribute("value",value);
o.innerHTML=name;
return o;
}
function addDropDown(){
var div=document.getElementById("tbSet");
var sl=document.createElement("select");
var o=options("Hello","hi");
sl.setAttribute("id","sl"+(slId++));
sl.appendChild(o);
div.appendChild(sl);
}