1

チェックボックスクリックイベントでコンマを使用して値をhdnfield値に連結する方法。チェックボックスをクリックすると、注文を選択してJS関数に渡します。3つのチェックボックスを選択した場合、hdnfieldの値は1、2、3のようになります...そのようなもの...どうすればよいですか?

if (chkBoxOne != null) 
{
    chkBoxOne.Attributes.Add("onclick", "javascript:return SelectOne('" + chkBoxOne.ClientID + "','" + e.Row.ClientID + "','" + lblorderId.Text + "')");
    //if (chkBoxOne.Checked)
    //    hdSelectAllOrderId.Value += ((Label)e.Row.FindControl("lblorderId")).Text + ",";
}


function SelectOne(id, rowID, OrderID) {
  var AllOrderIDs = 0;
  AllOrderIDs = Number(document.getElementById('ctl00_PagePlaceholder_hdSelectAllOrderId').value);
  alert(AllOrderIDs);
  if (document.getElementById(id).checked == true) {
      if (AllOrderIDs == '')
          AllOrderIDs = OrderID;
      else
          AllOrderIDs = AllOrderIDs + ' ,' + OrderID;
}
alert(AllOrderIDs);}

上記のコードは機能していません。最初のチェックボックスをクリックすると、最初のordidが表示されますが、2番目のチェックボックスをクリックすると、すでに割り当てられている最初のordidが表示されません。そのちょうど2番目のものを示しています...

   var AllOrderIDs = 0;
AllOrderIDs = document.getElementById('ctl00_PagePlaceholder_hdSelectAllOrderId').value;
var IDs = AllOrderIDs.split(',');
if (document.getElementById(id).checked == true) {
    if (IDs.indexOf(OrderID) == -1) {
        IDs.push(OrderID);
    }
}
else {
    var index = IDs.indexOf(OrderID);
    if (index != -1) {
        IDs = IDs.slice(index, 1);
    }
}
AllOrderIDs = IDs.join(',');
4

3 に答える 3

1

警告後にこれを見逃しました:-

document.getElementById('ctl00_PagePlaceholder_hdSelectAllOrderId').value= AllOrderIDs
于 2012-08-30T20:33:21.130 に答える
1

あなたはその行を逃しました:

document.getElementById('ctl00_PagePlaceholder_hdSelectAllOrderId').value = AllOrderIDs;

ところで、そのようなコントロールを参照しないでください。これを行う:

document.getElementById('<%=hdSelectAllOrderId.ClientID%>').value = AllOrderIDs;
于 2012-08-30T20:33:47.023 に答える
0

まず第一に、はい、値を非表示フィールドに保存するのを忘れていました。次に、チェックボックスの状態が「チェック済み」に変わったときにのみ状況を処理しています。したがって、隠しフィールドから ID を削除しません。チェックを入れてチェックを外して再度チェックすると、重複したIDが保存されます。文字列を ID の配列に分割してから操作することをお勧めします。

<html>
<head>
<script type="text/javascript">
function Select(sender, OrderID)
{
    var AllOrderIDs = document.getElementById('hf1').value;
    var IDs = AllOrderIDs.split(',');
    if (sender.checked == true)
    {
        if (IDs.indexOf(OrderID.toString()) == -1)
        {
            IDs.push(OrderID);
        }
    }
    else
    {
        var index = IDs.indexOf(OrderID.toString());
        if (index != -1)
        {
            IDs.splice(index, 1);
        }
    }

    AllOrderIDs = IDs.join(',');
    alert(AllOrderIDs);
    document.getElementById('hf1').value = AllOrderIDs;
}

function Check()
{
    var AllOrderIDs = document.getElementById('hf1').value;
    alert(AllOrderIDs);
}

</script>
</head>
<body>
<input type="hidden" id="hf1" />
<input type="checkbox" id="check1" onclick="Select(this, 1);" />
<input type="checkbox" id="check2" onclick="Select(this, 2);" />
<input type="checkbox" id="check3" onclick="Select(this, 3);" />
<br />
<p> <input type="button" onclick="Check();" value="Check" /> </p>
</body>
</html>
于 2012-08-30T20:52:10.500 に答える