【问题标题】:Html Multiple Input Elements With Same Name具有相同名称的 Html 多个输入元素
【发布时间】:2017-07-11 04:02:32
【问题描述】:

我昨天遇到了一个具体而有趣的问题。假设我们有以下 html 代码块:

<div id="addresses">
 <input type="text" name="address" id="addr1" />
 <input type="text" name="address" id="addr2" />
 <input type="text" name="address" id="addr3" />
</div>

发布此表单时,将连接具有相同名称的输入元素,并用逗号分隔值。例如,如果我们有如下值:

addr1 = 'TEST TEST XXX'
addr2 = 'YYY ZZZ 11111'
addr3 = 'ZZZ KKK TEST '

提交的表单post数据如下:

address = 'TEST TEST XXX', 'YYY ZZZ 11111', 'ZZZ KKK TEST '

然后我可以将这些值中的每一个作为服务器端的数组元素(3 个不同的数组元素)。但是如果值是这样的:

addr1 = 'TEST, TEST XXX'
addr2 = 'YYY ZZZ, 11111'
addr3 = 'ZZZ KKK, TEST '

那么提交的表单数据就变成了:

address = 'TEST, TEST XXX', 'YYY ZZZ, 11111', 'ZZZ KKK, TEST '

那么结果数组包含 6 个元素,这是完全错误的。我相信值中包含的 COMMA 字符不会被转义。

关于这个问题的任何想法。提前谢谢...

【问题讨论】:

    标签: java html spring-mvc


    【解决方案1】:

    使用这个 HTML

    <div id="addresses">
        <form:input path="address[0]"  />
        <form:input path="address[1]"  />
        <form:input path="address[2]"  />
    </div>
    

    Spring 应该使用 String[] address 服务器端对象的值填充您的输入文本,反之亦然。

    你可以看这里:http://bitbybitblog.com/forms-and-data-models-in-spring-mvc/

    【讨论】:

    • 我最终通过将索引值添加到每个输入名称(即地址_1,地址_2)将输入名称更改为唯一值。
    【解决方案2】:

    你没有使用数组。

    像这样改变每个输入:

    <input type="text" name="address[]" id="addr1" />
    

    当您获取数据时,您将拥有一个数组,而不会出现任何关于逗号或其他问题的问题。

    $_POST['adddess']=array(0=>'TEST, TEST XXX',1=>'YYY ZZZ, 11111',2=>'ZZZ KKK, TEST ');
    

    您可以根据索引访问每个项目

    【讨论】:

    • 我没有在服务器端使用 PHP。我正在使用 Java - Spring MVC。我要问的是一种通用/服务器技术不可知的解决方案。可能会更改分隔符(逗号)或转义分隔符。
    • 您没有发布您在问题中使用的语言。编辑它。无论如何,我认为您将能够以 JAVA 方式获取答案的第二部分来获取发布值
    【解决方案3】:

    不要使用具有一个 NAME 属性值的多个输入字段,而是使用唯一值。这可以使您的代码更加健壮。

    <div id="addresses">
     <input type="text" name="addr1" id="addr1" />
     <input type="text" name="addr2" id="addr2" />
     <input type="text" name="addr3" id="addr3" />
    </div>
    

    在 php 方面:

    <?php
    $address = array($_REQUEST['addr1'], $_REQUEST['addr2'], $_REQUEST['addr3']);
    ?>
    

    【讨论】:

    • 我没有在服务器端使用 PHP。我正在使用 Java - Spring MVC。我要问的是一种通用/服务器技术不可知的解决方案。可能会更改分隔符(逗号)或转义分隔符。
    • 如果在您的情况下可能的话,请确实更改分隔符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2017-08-03
    • 2014-11-28
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多