2009-02-12 7 views
0

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

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> 
+0

Ваш код HTML не отображается.Пожалуйста, измените все свои теги от до

+0

более конкретное название для вашего вопроса поможет другим вам помочь. также попробуйте форматировать свой код. – euge1979

ответ

0

Вы можете попробовать что-то другое, чем InnerHtml - вы можете попробовать это:

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

С вашего яваскриптом кода, это выглядит, вы должны использовать следующий код:

tbl.innerHTML += 

вместо

tbl.innerHTML = 

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

0

Приведенный ниже код отлично подходит для меня как в 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

thanksit сейчас работает – 2009-02-12 08:07:00

+0

Naveen, можете ли вы поделиться тем, что пошло не так, и какое изменение повлияло на вашу проблему? – kalyang

2
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

спасибо, что это работа для меня – 2009-02-12 08:06:25

0

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

как:

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

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

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