如何允许用户在HTML表格中输入元素

时间:2010-11-15 14:01:03

标签: javascript html user-interface data-entry

我想允许用户在Web应用程序中输入人员列表,然后将其作为一个批次提交。每行看起来大致如下:

<TR>
    <TD> <INPUT name="person.fname"> </TD>
    <TD> <INPUT name="person.lname"> </TD>
    <TD> <INPUT name="person.birthdate"> </TD>
</TR>

表单以单行空白输入开始,每当用户填写任何字段时,我都希望在列表中添加一个新行 - 即列表按需增长。同样,只要用户清除其中的所有字段,我想要一行消失。

实现此目的的最简单,最强大和最易维护的方法是什么?

最后,如何将此值表提交回服务器?为每个字段命名的首选方法是什么,以便服务器可以根据输入的值创建Person个实体列表?

4 个答案:

答案 0 :(得分:4)

如果您熟悉jQuery,则可以使用.change处理程序来捕获它们以更改字段。测试它是否是最后一行以及是否有数据。如果他们已将所有内容排除在行外,请将其删除。 jQuery有一些很好的方法可以做到这一点,但这完全取决于你想要如何编写它。如果是这样,请使用jQuery的.append函数追加新行。如果您使用的是Python和cgi_app,并且对每种类型的单元使用相同的name属性,则可以使用form.getlist('fname []'),它将返回一个名称数组。

答案 1 :(得分:2)

  

命名每个字段的首选方法是什么,以便服务器可以根据输入的值创建Person实体列表?

你可以这样做:

<TR>
    <TD> <INPUT name="person[fname]"> </TD>
    <TD> <INPUT name="person[lname]"> </TD>
    <TD> <INPUT name="person[birthdate]"> </TD>
</TR>

生成数组'人'

答案 2 :(得分:0)

JQuery是一个很好的建议,但是如果你不想使用它,你可以尝试通过附加索引来生成输入名称。例如:

<TR>
<TD> <INPUT name="person_0.fname"> </TD>
<TD> <INPUT name="person_0.lname"> </TD>
<TD> <INPUT name="person_0.birthdate"> </TD>
</TR>
...
<TR>
<TD> <INPUT name="person_N.fname"> </TD>
<TD> <INPUT name="person_N.lname"> </TD>
<TD> <INPUT name="person_N.birthdate"> </TD>
</TR>

其中“N”是行索引。这种方式可以帮助您通过使用(即)$ GET ['person '。$ i.'fname'],$ GET ['person '。$ i.'lname'] ......等等。

答案 3 :(得分:0)

CSS:

input:not(:first-of-type){
    display:none}

jQuery的:

$('input').click(function(){
    $(this).val('');
}).blur(function(){
    if($(this).val().length>1){
        $(this)
            .toggleClass('processed')
            .hide('slow')
            .parents('#person').find('input:not(.processed):first').show('slow'); 
    }
});
$('#person').prepend('Click on blank space to proceed<br/>');

HTML:

<tr>
    <form id=person method=post action='/your_page_on_server'>
        <td><input name="fname" value='Enter the first name'/></td>
        <td><input name="lname" value='Enter the last name'/></td>
        <td><input name="birthdate" value='Enter the birth date'/></td>
        <td><input type=submit value='Submit'/></td>
    </form>
</tr>

我不熟悉服务器端脚本,所以我的回答只是部分的。这是一个example。 另外,我建议通过JS添加输入验证。