2011-09-20 49 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