jspページに4つのチェックボックスがあります。選択した順に値を取得したい。チェックボックスの値がA、B、C、Dであるとします。最初にB、次にD、次にA、最後にCを選択すると、B、D、A、Cが表示されます。これらの値をJavaに送信する必要があります。
6 に答える
最善の方法ではないかもしれませんが、ラジオボタンの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>
HTMLには、値を並べ替えることができるコントロールがありません。JavaScriptを使用して、クリックされた順序を追跡する必要があります(または、選択ごとにフォームを送信する必要があります)。
hidden.value += this.value
これに対する最も簡単なアプローチは、チェックボックスのクリックイベントで非表示の入力を行うことです。
チェックボックスの選択を解除した場合に何が起こるかについてビジネスロジックを決定し、それも実装する必要があります。
使ってみてください
$('#isAgeSelected').attr('checked')
これはtrueまたはfasleを返します
1)新しい非表示の入力フィールドを追加します。2)ユーザーの選択に従って値を入力します。3)サーバーで非表示の変数を読み取ります。
例:initially hidden_variable = ""
ユーザーがBを選択すると、hidden_variable = "B"ユーザーがCを選択すると、hidden_variable = "B、C"のようになります。
ユーザーが値の選択を解除した場合は、その値をhidden_variableから削除します。
これはすべて、いくつかの基本的なjs機能で実行できます
単にaを使用し<input type="hidden" id="myList"/>
て値をJavaに送信します。
チェックボックスがオン/オフの場合、非表示フィールドにチェックボックスの値を追加(またはを使用substring
して削除)するjavascript関数を呼び出します。indexOf
編集:そしてこれは重複しています:チェックボックスがクリックされた順序を検出します
みなさん、どうもありがとうございました。最後に、皆さんからの提案を使用して結果を得ました。私が使用したもの: 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側から簡単に処理できるので問題ありません。