2016-01-22 38 views
0

我有这样的代码:如何使一个普通的JScript函数与动态表单的工作

<script type="text/javascript"> 
function populate(){ 
    s1 = document.ins_form.servizio.value; 
    valori = s1.split("|"); 
    document.ins_form.codice.value = valori[0]; 
    document.ins_form.costouno.value = valori[1]; 
} 
</script> 


<form action="" method="post" name="ins_form" id="ins_form"> 
<select name="servizio" id="servizio" onchange="populate()"> 
    <option value="">Choose..</option> 
    <option value="100|10">choice one</option> 
    <option value="302|32">choice two</option> 
    </select> 

<input type="text" name="codice" id="codice" readonly="readonly" /> 
<input type="text" name="costouno" id="costouno" readonly="readonly" /> 
</form> 

这是指,将通过用户的选择来填充特定输入字段(SERVIZIO,codice,costouno),与不同的值,并且它很好地工作。

我不是一个使用JScript的魔术师,所以我找不到一个解决方案来将这个函数转换成一个通用的解决方案,以便能够在动态生成的其他字段上使用它,那就像:servizio1,codice1, costouno1和servizio2,codice2,costouno2和servizio3 ecc ...

希望它有点清楚,谢谢你的帮助。

+1

你的问题是“还挺清楚的”,但不够清晰回答。函数应该在哪里获得填充哪个字段的信息?另外,如果所有的值都在'document.ins_form.servizio.value'中,那么这意味着服务器将它们填充进来。为什么服务器不会从一开始就将它们填充到正确的位置? – Tomalak

+0

我已经添加了表单本身,所以也许更清晰,重点是:我想要动态添加更多的行到该表单,并且该函数也适用于新行。 – Davide

回答

0

您可以通过表单元素本身的功能:

<script type="text/javascript"> 
function populate(field1, field2, fromDelimitedString){ 
    valori = fromDelimitedString.split("|"); 
    field1.value = valori[0]; 
    field2.value = valori[1]; 
} 
</script> 

<form action="" method="post" name="ins_form" id="ins_form"> 
<select name="servizio" id="servizio" onchange="populate(document.getElementById('codice'), 
document.getElementById('costuono'), document.getElementById('servizio').value)"> 
    <option value="">Choose..</option> 
    <option value="100|10">choice one</option> 
    <option value="302|32">choice two</option> 
</select> 

<input type="text" name="codice" id="codice" readonly="readonly" /> 
<input type="text" name="costouno" id="costouno" readonly="readonly" /> 
</form> 
+0

非常感谢,非常适合! – Davide

相关问题