2011-09-20 51 views
2

我有类似元件形式:大厦HTML表单使用数组

<div class="row1"> 
    <select name="someSelectField" multiple="multiple" class="selectList"> 
     <option value="1">1</option>   
     <option value="2">2</option>   
    </select> 
    <input type="checkbox" name="checkboxField" class="checkboxField" value="1" /> checkbox</td> 
</div> 
<div class="row2"> 
    <select name="someSelectField" multiple="multiple" class="selectList"> 
     <option value="1">1</option>   
     <option value="2">2</option>   
    </select> 
    <input type="checkbox" name="checkboxField" class="checkboxField" value="1" /> checkbox</td> 
</div> 

这些将继续下跌的一页。这些领域有许多不同的行。没有设置行,因为javascript用于创建更多行。

我的问题是,每个名称属性的值应该是什么,以便它保持分组为数组并可以一起引用?例如,如果我使用someSelectField [1],当方法为GET时,表单将它发送为someSelectField [1] = 1 & someSelectfield [1] = 2(如果两者都选中)。我正在寻找它someSelectField = 1 & someSelectfield = 2等。

任何帮助,将不胜感激。谢谢。

+0

好像你上面有什么工作原理是:http://jsfiddle.net/gilly3/V8sQZ/ – gilly3

+0

上述的问题是输入复选框将覆盖而不是是一个数组。这些值会因行而异。 – fanfavorite

+0

是否尝试在名称的末尾添加'[]'?应该创建一个数组。例如'name =“someSelectField []”' –

回答

1

为什么你不给控件唯一的名称?如果您的JavaScript能够给予的div索引类的名字,你可能只是重组的HTML像这样:

<div class="row1"> 
    <select name="someSelectField1" multiple="multiple" class="selectList"> 
     <option value="1">1</option>   
     <option value="2">2</option>   
    </select> 
    <input type="checkbox" name="checkboxField1" class="checkboxField" value="1" /> checkbox</td> 
</div> 
<div class="row2"> 
    <select name="someSelectField2" multiple="multiple" class="selectList"> 
     <option value="1">1</option>   
     <option value="2">2</option>   
    </select> 
    <input type="checkbox" name="checkboxField2" class="checkboxField" value="1" /> checkbox</td> 
</div> 

这具有服务器独立的利益太多,因为一些框架解析HTML阵列真的很好,给你一个正确的数组,有些只是覆盖键。

如果您允许从中间删除元素,而不是从最后删除元素,那么您的解析可能会在后端得到一些混乱,但它不应该太糟糕。如果这是一个问题,你可以编写一个简单的jQuery脚本,将所有的名字重新排列。警告,未经测试的代码如下:

$("div[class^='row']").each(function(idx, value) { 
    var $value = $(value); 
    $value.find(".selectList").attr("name", "someSelectField"+(idx+1)); 
    $value.find(".checkboxField").attr("name", "checkboxField"+(idx+1)); 
}); 
+0

这个问题是我需要发送一个变量与提交的行数。 jsp被设置为获得如下所示的选择字段: String [] someSelectField = request.getParameterValues(“someSelectField”); – fanfavorite

+0

我无法评论你是如何通过Java与Web表单交互的,但是如果你使用的是Java代码,你应该添加Java到你的代码中。 –

+0

我这样做,并在提交时用JS函数操纵它。谢谢。 – fanfavorite