0

ディスプレイには、すでにチェックされているチェックボックスがあります。

最近チェックした値が必要ですが、以下のコードは、既にチェックされている値を含むすべてのチェックボックスの値を返しています。

新しくチェックされた値を取得したい よろしくお願いします

コード:

function updatePermissions(data){ //function

    var chkdValue = null;

    var permissions = data.split(";");
    var htmlData = document.getElementsByName("permission");//name of checkboxes
    for(var k=0;k<htmlData.length;k++){
        if(htmlData[k].checked==true){
            var chkdids = htmlData[k].value;
            alert(chkdids);
        }

    }
4

4 に答える 4

1

次の例のようなコードを使用できます。ここでは、チェック ボックスへの変更を記録するためにハッシュ テーブルを使用しています。チェックボックスが設定されている場合のみ、ハッシュテーブルが設定されます。送信をクリックすると、ハッシュテーブルからすべての値が取得され、アラートに表示されます。このコードを IDE に直接コピーして貼り付けてテストすることができます。あなたはよりよく理解するでしょう

<html>
<head>
<script>
        var flag={};
        function set(obj)
        {
            if(document.getElementById(obj.id).checked)
            flag[obj.id]=obj.id;
        }

        function checknew()
        {

            for (key in flag) {
                alert(flag[key]);
            }
            for (key in flag) {
                delete flag[key];
            }

        }
        </script>
  </head>
  <body>
    <input type="checkbox" id="first" onclick="set(this)"/>
    <input type="checkbox" id="second" checked="checked" onclick="set(this)"/>
    <input type="button" value="submit" onclick="checknew()"/>

  </body>
</html>
于 2013-03-06T09:02:41.690 に答える
0

ボックスのdefaultCheckedプロパティをテストするだけです。

if(htmlData[k].checked && !htmlData[k].defaultChecked){
  var chkdids = htmlData[k].value;
  alert(chkdids);
}
于 2013-03-06T09:12:54.567 に答える
0

このようなもの...と思います。それらが発生したときに価値が欲しいという印象を受けます。そこで、チェックボックスに eventListerns を配置しました。それらがクリックされると...値を警告します。もちろん、配列のグローバル obj を設定し、後で処理するためにそれらをそこにプッシュすることもできます..など..しかし、アイデアはその場で値をキャプチャすることです。コールバックでは、「チェック済み」テストを配置できます。

var checkBxs = document.getElementsByName("permission");
  for(var i = 0; i < checkBxs.length; i++){
    checkBxs[i].addEventListener("click", function(){console.log(this.value)}, false);
  }

ネイティブの JavaScript を使用します。あなたはjQueryを規定しませんでした。

于 2013-03-06T09:00:57.527 に答える
0

コードのより良いアイデアが必要になりますが、できることは、eventListenerすべてのチェックボックスに を追加して、変更時にそのチェックボックスの値を配列にプッシュすることです。「最近」をどのように定義するかによって異なります...それは同じセッション中を意味しますか? それともx時間後ですか?setTimeoutたぶん、特定の時間後に配列をクリアすることができますか?

var checkedArray = [];
var permissions = data.split(";");
$('input[name=permission]').change(function() {
  if (this.checked) {
    checkedArray.push(this.value);
  } 
}
//checkedArray should populate with values of checkbox

setTimeout(function() { checkedArray = []; }, 10000); 
//after 10 seconds it will clear checkedArray

参考までに、このコードが実際に機能するかどうかはわかりません。ただのアイデア。

于 2013-03-06T08:56:34.303 に答える