2012-08-30 53 views
1

如何使用複選框單擊事件的逗號將值連接到hdnfield值。當我點擊複選框時,我選擇順序並通過JS函數。如果我選擇了三個複選框,那麼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);} 

上述代碼無法正常工作。當我點擊firt複選框顯示首先ordid,但是當我點擊第二個不顯示第一個ordid,這是我已經分配給它。它只是顯示第二個......

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(','); 

回答

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> 
+0

我得到的錯誤行李像對象不支持此方法或屬性..在IDs.push(OrderID); – Philly

+0

那麼你可能做錯了什麼。確保AllOrderIDs是一個字符串,而不是數字。不要將其轉換爲數字。 –

+0

請參閱修改後的帖子..那就是我正在做的... – Philly

1

您警報之後錯過了這個: -

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

你錯過了該行:

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

順便說一句,不是指這樣的控制。這樣做:

document.getElementById('<%=hdSelectAllOrderId.ClientID%>').value = AllOrderIDs; 
+0

如果我選擇兩個複選框其工作正常,當我選擇第三個它的表現像「南,123」是什麼楠 – Philly

+0

那是因爲你不能將「1,2」到號碼。你爲什麼轉換成號碼? –

+0

我不轉換..我只是分配給Hdnfield value.What如果我使用標籤,而不是隱藏域 – Philly