0

jspページに4つのチェックボックスがあります。選択した順に値を取得したい。チェックボックスの値がA、B、C、Dであるとします。最初にB、次にD、次にA、最後にCを選択すると、B、D、A、Cが表示されます。これらの値をJavaに送信する必要があります。

4

6 に答える 6

1

最善の方法ではないかもしれませんが、ラジオボタンのonClick属性を使用して非表示の入力フィールドを常に更新することにより、ラウンドアバウトアプローチで実行できます。
テストされていないコード:

<script>
 function updateFoo(elemId){
   var elem = document.getElementById("foo");
   elem.value = elem.value+", "+elemId;
   console.log(elem.value);        
}

funcition cleanFoo(){
   //Now clean the string to remove the ',' at the beggining and the end and to 
   //contain A,B,C,D only once
   /*
    Scan the string from the back and keep the last occurence of each ID
    since the user can select or click on radio buttons more than once
    Eg. a,b,c,d,b,b,c,a,d,d,a
    Keep:         b,c,    d,a  //final selections
    //I may write a code here when I get some time
    */
}

</script>
<body>
<input type="radio" id="A" onClick="updateFoo('A')">A<br/>
<input type="radio" id="B" onClick="updateFoo('B')">B<br/>
<input type="radio" id="C" onClick="updateFoo('C')">C<br/>
<input type="radio" id="D" onClick="updateFoo('D')">D<br/>
<input type="hidden" id="foo" value="">
</body>
于 2012-12-18T19:31:32.570 に答える
1

HTMLには、値を並べ替えることができるコントロールがありません。JavaScriptを使用して、クリックされた順序を追跡する必要があります(または、選択ごとにフォームを送信する必要があります)。

hidden.value += this.valueこれに対する最も簡単なアプローチは、チェックボックスのクリックイベントで非表示の入力を行うことです。

チェックボックスの選択を解除した場合に何が起こるかについてビジネスロジックを決定し、それも実装する必要があります。

于 2012-12-18T16:49:54.353 に答える
1

使ってみてください

$('#isAgeSelected').attr('checked')

これはtrueまたはfasleを返します

于 2012-12-18T18:41:59.587 に答える
0

1)新しい非表示の入力フィールドを追加します。2)ユーザーの選択に従って値を入力します。3)サーバーで非表示の変数を読み取ります。

例:initially hidden_​​variable = ""

ユーザーがBを選択すると、hidden_​​variable = "B"ユーザーがCを選択すると、hidden_​​variable = "B、C"のようになります。

ユーザーが値の選択を解除した場合は、その値をhidden_​​variableから削除します。

これはすべて、いくつかの基本的なjs機能で実行できます

于 2012-12-18T16:49:49.613 に答える
0

単にaを使用し<input type="hidden" id="myList"/>て値をJavaに送信します。

チェックボックスがオン/オフの場合、非表示フィールドにチェックボックスの値を追加(またはを使用substringして削除)するjavascript関数を呼び出します。indexOf

編集:そしてこれは重複しています:チェックボックスがクリックされた順序を検出します

于 2012-12-18T16:50:13.737 に答える
0

みなさん、どうもありがとうございました。最後に、皆さんからの提案を使用して結果を得ました。私が使用したもの: JavaScriptコード

    <script type="text/javascript">

    arr = new Array();

    function updatePriority(elemId){

      var elem = document.getElementById("foo");
      var chkBox = document.getElementById(elemId);
      var options = document.getElementsByName('checkbox1');

       if(document.getElementById(elemId).checked) {    
   alert("checked");         
 arr.push(elemId);  
     }
       else { 
          for(var i = arr.length; i>=0; i--){
      if(arr[i]==elemId){
        arr.splice(i,1);
         break;
               }
      }
            }

      for(var i = (arr.length-1); i>=0; i--){
       alert("checked value list ::"+arr[i]);

      }


   }

逆の順序で出力を取得しています。これはJava側から簡単に処理できるので問題ありません。

于 2012-12-19T12:11:00.640 に答える