2017-02-21 242 views
0

昨天我遇到了一个特殊而有趣的问题。假设我们有下面的HTML代码块: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 ' 

提交的表单后数据如下:

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字符不会被转义。

对此问题的任何建议。在此先感谢...

回答

0

而不是使用具有一个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']); 
?> 
+0

我没有在服务器端使用PHP。我正在使用Java - Spring MVC。我所要求的是一种通用/服务器技术不可知的解决方案。也许更改分隔符(逗号)字符或可能转义分隔符字符。 – Ahmet

+0

然后确实更改分隔符,如果这可能在您的情况。 – Cagy79

1

您没有使用数组。

更改每个输入这样的:

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

,当你将获取的数据,你将有一个数组没有关于逗号或其他任何问题。

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

,你可以根据指数

+0

我没有在服务器端使用PHP。我正在使用Java - Spring MVC。我所要求的是一种通用/服务器技术不可知的解决方案。也许更改分隔符(逗号)字符或可能转义分隔符字符。 – Ahmet

+0

你没有发布你在你的问题中使用的语言。编辑它。无论如何,我认为你将能够通过JAVA方式获得发布值的答案的第二部分 –

0

使用此HTML

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

和Spring应与String[] address服务器端对象和副值填充您输入的文本访问每个项目-versa。

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

+0

我最终通过向每个输入名称(即address_1,address_2)添加索引值来将输入名称更改为唯一值。 – Ahmet

相关问题