динамически генерировать текстовые поля с помощью JavaScript - PullRequest
0 голосов
/ 12 февраля 2009

Я хочу генерировать текстовые поля динамически в соответствии с пользовательским вводом. Если пользователь вводит целое значение в текстовое поле, если он / она вводит 5, я хочу создать 5 текстовых полей. Этот код работает в Firefox, но не работает в IE и Netscape; Пожалуйста, помогите мне, как это сделать, или укажите на любую другую ошибку в этом коде. Кроме того, технология, которую мы используем, это Struts 2.
Пожалуйста, помогите мне.

Код JavaScript:

function generate()
{
  var tot = document.getElementById("totmob").value;
  var tbl = document.getElementById("sim");

for(var i =1;i<=tot;i++)
{
  tbl.innerHTML  = 'Mobile No'+i+' <input type="text"  size = "20" maxlength= "20" name= hoardingregister.mobileno> <br> \n';
}

HTML код:

<td>
<s:textfield id="totmob" label="Total Mobile Number"  />
<td>
<td>
<input type="button"  value="ADD" onclick="generate()"/>
</td>
</tr>
</table>
<div id="sim">
</div>

Ответы [ 6 ]

2 голосов
/ 12 февраля 2009
for(var i =1;i<=tot;i++)
{
  tbl.innerHTML  = 'Mobile No'+i+' <input type="text"  size = "20" maxlength= "20" name= hoardingregister.mobileno> <br> \n';
}

должно быть

for(var i =1;i<=tot;i++)
{
  tbl.innerHTML  += 'Mobile No'+i+' <input type="text"  size = "20" maxlength= "20" name= hoardingregister.mobileno> <br> \n';
}

потому что вам нужно добавить внутренний HTML, а не заменить его.

Вы также использовали

вместо
0 голосов
/ 28 февраля 2013

Но если вы изменяете значение в текстовом поле, не обновляя страницу, дополнительные текстовые поля добавляются после ранее добавленного текстового поля. Но это неправильно, когда мы меняем значение в текстовом поле, только число новых текстовых полей должно добавляться вместо того, чтобы сохранять предыдущие текстовые поля тоже. Можете ли вы изменить кодировку в соответствии с условиями, которые я сказал.

0 голосов
/ 20 марта 2009

добавить уникальный идентификатор к имени входа или уникальный идентификатор к нему.

как:

for(var i =1;i<=tot;i++)
{
  tbl.innerHTML  += 'Mobile No'+i+' <input type="text"  size = "20" maxlength= "20" name= hoardingregister.mobileno'+i+'> <br> \n';
}

или вы вставили в него идентификатор, например:

ID = "вход" + I

0 голосов
/ 12 февраля 2009

Приведенный ниже код отлично подходит для меня как в IE, так и в Firefox. Когда вы говорите, что это не работает, что вы имеете в виду?

function generate()
{
  var tot = document.getElementById("totmob").value;
var tbl = document.getElementById("sim");

for(var i =1;i<=tot;i++)
{
  tbl.innerHTML  = tbl.innerHTML  +'Mobile No'+i+' <input type="text"  size = "20" maxlength= "20" name= hoardingregister.mobileno> <br> \n';
}

}
</script>
<body>
<table>
<tr>
    <td>
        <span>Total Mobile Number  </span>
        <input type="text" id="totmob" />
    <td>
    <td>
    <input type="button"  value="ADD" onclick="generate()"/>
    </td>
</tr>
</table>
<div id="sim">
</div>
</body>
</html>
0 голосов
/ 12 февраля 2009

Из вашего кода JavaScript, похоже, вы должны использовать следующий код:

tbl.innerHTML  +=

вместо

tbl.innerHTML  =

внутри цикла for.

0 голосов
/ 12 февраля 2009

Можете ли вы попробовать что-то еще, кроме InnerHtml - вы можете попробовать это:

  • используйте GetElementByID, чтобы получить элемент, в который вы хотите добавить текстовые поля
  • удалить все существующие дочерние элементы, если требуется
  • Добавить текстовые поля в качестве дочерних элементов к выбранному узлу
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...