2012-03-12 11 views
1

私は複数の選択ボックスを持っており、いくつかのJavaScriptを使用して、ボックス内の要素の順序を並べ替えます。 アレイ全体を、選択項目だけでなくJavaにソートして提出したいと考えています。どうすればこれを達成できますか?Java複数選択ボックスからすべての要素を取得

JSP:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#mup")[0].attachEvent("onclick", moveUpItem);  
     $("#mdown")[0].attachEvent("onclick", moveDownItem);  
    }); 

    function moveUpItem(){ 
     $('#list option:selected').each(function(){  
      $(this).insertBefore($(this).prev()); 
     }); 
    } 

    function moveDownItem(){  
     $('#list option:selected').each(function(){  
      $(this).insertAfter($(this).next()); 
     }); 
    }  
</script> 



<table width="100%"> 
    <tr> 
     <td width="50%" align="center"> 
      <h1>DET Column Maintenance</h1> 
     </td> 
    </tr> 
</table> 

<form action="process.det_column_order" method="post" name="detColumnSortorder" > 
    <table class="data_table"> 
     <tr align="center"> 
      <td> 
       <select id="list" name="fieldNames" size="35" multiple="multiple" style="width: 250px;"> 
        <c:forEach var="field" items="${detFields}"> 
         <option value="${field.fieldName}">${field.displayName}</option> 
        </c:forEach> 
       </select> 
      </td> 
     <tr> 
      <td style="text-align: center;"> 
       <button id="mup">Move Up</button>&nbsp;&nbsp;&nbsp; 
       <button id="mdown">Move Down</button> 
      </td> 
     </tr> 
     <tr> 
      <td style="text-align: center;"> 
       <input name="action" type="submit" value="Submit"/> 
      </td> 
     </tr> 
    </table> 
</form> 

FORM:

private String[] fieldNames; 
public String[] getFieldNames() { return this.fieldNames; } 
      public void setFieldNames(String[] val) { this.fieldNames = val; } 
+0

http://stackoverflow.com/questions/590163/how-to-all-options-of-a-select-using-jquery – gorjusborg

+0

この写真は面白いですか? –

答えて

4

フォームはのみ選択した値を提出しているので、あなたはもう少しJS、別のフォームフィールドが必要になります。 、

var order = [], sel = document.getElementById("list"); 
for(var i = 0, len = sel.options.length; i < len; i++) { 
    order.push(sel.options(i).value); 
} 
document.getElementById("fieldNamesOrder").value = order.join(","); 

そして、サーバ側で:

<input type="hidden" name="fieldNamesOrder" id="fieldNamesOrder"/> 

、移動のすべてのクリックは、上/下に移動した後:

は、あなたが気に値を保持する非表示のフォームフィールドを導入しますあなたは、その投稿されたフィールドの順序フィールド名を読むことができます。

+0

ダミット!あなたは1秒のように私を倒す!しかし、答えは私よりもはるかに詳細です! +1 :) –

+0

技術的に私はそれらをすべて必要としています...私はリストの中でそれらをロールアップし、テーブル上の更新を行い、フィールドの順序を更新します –

+1

右、隠されたフィールド(すなわち要求[ fieldNamesOrder "]またはあなたのフレームワークaccessess投稿データ)はすべてのオプションを順番に含みます。 –

0

各オプションからの値を格納する隠しテキストフィールドをHTMLフォームに作成するか、フォームを送信する前にすべてのオプションをプログラマチックに選択する必要があります。

関連する問題