javascript add text field

  • Тут может быть ваша реклама

__viv__

Турист
11 Май 2005
22
0
8
107
бомж
Credits
0
есть вот такой код, он вставляет текстовые поля в форму, тоесть динамически можно добавить поле.
Вот только загвоздка, поле он создает с одинаковым именем FieldName может кто подправит код, чтоб имена полей были уникальные или лучше всего являлись массивом.

Сам я в яваскрипте плаваю, вернее тону.

Код:
<SCRIPT>  function addField (form, fieldType, fieldName, fieldValue) 
{    
if (document.getElementById) 
{      
var input = document.createElement('INPUT');       
 if (document.all) 
{
// what follows should work                           
// with NN6 but doesn't in M14         
 input.type = fieldType;          
input.name = fieldName;          
input.value = fieldValue;       
 }       
 else if (document.getElementById) 
{ 
// so here is the                                          
// NN6 workaround          

input.setAttribute('type', fieldType);        
input.setAttribute('name', fieldName);         
input.setAttribute('value', fieldValue);        
}      form.appendChild(input);    
}  

} 
 function getField (form, fieldName) 
{   
 if (!document.all)      
return form[fieldName];    
else  // IE has a bug not adding dynamically created field       
 // as named properties so we loop through the elements array      
 for (var e = 0; e < form.elements.length; e++)       
 if (form.elements[e].name == fieldName)          
return form.elements[e];    
return null;  
}  
</SCRIPT> 
 <SCRIPT>  var i = 0;  </SCRIPT>  
</HEAD>  <BODY>  
<H2 CLASS="javascript">Testing dynamic form field addition</H2>  
<FORM NAME="formName" method="post" action="temp.php">  
<INPUT TYPE="text" NAME="fieldName" VALUE="field0" SIZE="10"> 
<INPUT TYPE="button" VALUE="add field"         
ONCLICK="var type = 'text';                 
 if (getField(this.form, this.form.fieldName.value))                   
 this.form.fieldName.value = 'field' + ++i;                  
addField(this.form, 'text', this.form.fieldName.value, i);">  	
<input type="submit" name="submit" value="отправить">
 </FORM>  </BODY>
 

__viv__

Турист
11 Май 2005
22
0
8
107
бомж
Credits
0
есть еще вот такой скрипт, он впринципе немного лучше чем предедущий, тем что позволяет добавлять не просто поля, а еще и непосредственно в таблицу, тоесть настраивается местоположение полей.

Но тут проблема он передает параметры в IE но не передает динамически добавленые поля в скрипт через FireFox :(.

<span id="table">
<table border=0 cellspacing=0 cellpadding=3>
<caption>ntrcn</caption>
<tr>
<td>Имя</td><td>дата рождения</td>
<td> <a href="#" onclick="return addline();">добавить</a></td>
</tr>
<tr id="newline" nomer="[0]">
<td><input type="text" name="name[0]">
</td><td><input type="text" name="date[0]"></td>
<td valign="top"><a href="#" onclick="return rmline(0);">удалить</td>
</tr>
</table> </span>
<script> var c=0;
function addline()
{ c++;
s=document.getElementById('table').innerHTML;
s=s.replace(/[\r\n]/g,'');
re=/(.*)(<tr id=.*>)(<\/table>)/gi;
s1=s.replace(re,'$2');
s2=s1.replace(/\[\d+\]/gi,'['+c+']');
s2=s2.replace(/(rmline\()(\d+\))/gi,'$1'+c+')');
s=s.replace(re,'$1$2'+s2+'$3');
document.getElementById('table').innerHTML=s;
return false;
}
function rmline(q)
{
// if (c==0) return false; else c--;
s=document.getElementById('table').innerHTML;
s=s.replace(/[\r\n]/g,'');
re=new RegExp('<tr id="?newline"? nomer="?\\['+q+'.*?<\\/tr>','gi');
s=s.replace(re,'');
document.getElementById('table').innerHTML=s;
return false;
}
</script>