在页面加载时使用JavaScript中的asp:HiddenField值?

时间:2009-09-18 07:07:08

标签: asp.net javascript

我试图在回发和pageload之后在javascript中使用asp:HiddenField控件的值。我尝试了类似这样的东西但它不起作用。(get函数工作正常,但我似乎无法使“hidVal”从asp:HiddenFIeld获取值

<script type="text/javascript" language="javascript">

var hidVal=document.getElementById("<% =hidField.ClientID %>").value;

function Get(checbox)
{   

  if(checbox.checked)hidVal += 1;
        else hidVal -= 1;


  document.getElementById("<% =hidField.ClientID %>").value = hidVal.toString();

}

基本上我正在尝试获取隐藏字段的值,在每个选中的复选框上增加它(使用javascript)并在每次回发时将递增的值重新设置为隐藏字段。 如果您对如何完成这项工作有所了解,请提供帮助。

感谢您的时间。

3 个答案:

答案 0 :(得分:3)

你应该在Get函数中得到hidField值,你也有类型coersion 问题,因为输入的'value'属性是一个字符串,你直接递增它没有先将其转换为数字:

function Get(checbox) {   
  var hidField = document.getElementById("<%=hidField.ClientID %>"),//get element
      hidVal = +hidField.value || 0; // get the value and convert it to number,
                                     // set 0 if conversion fails

  if(checbox.checked) {
    hidVal++; 
  } else {
    hidVal--;
  }
  hidField.value = hidVal; // set the value back
}

答案 1 :(得分:1)

记得把javascript部分放在结束标记之前,所以当它出现时,HiddenField已经呈现并且可以使用了。

并且,对于CMS答案,请不要忘记使用:

<asp:CheckBox ID="chk" runat="server" onclick="Get();" />

答案 2 :(得分:1)

据我了解,我已编写以下代码。请查看。

<script type="text/javascript" language="javascript">

    function Get(checbox)
    {
    var hidVal;
    if(document.getElementById("<% =hidField.ClientID %>").value!="")
    {
    hidVal=parseInt(document.getElementById("<% =hidField.ClientID %>").value);
    }
    else 
    hidVal=0;

      if(checbox.checked)hidVal += 1;
            else hidVal -= 1;
            alert(hidVal);
      document.getElementById("<% =hidField.ClientID %>").value = hidVal.toString();

    }

现在我在aspx页面中添加了以下代码:

<div>
        <asp:CheckBox ID="chk1" Text="1" runat="server" onclick="javascript:Get(this);" />
                    <asp:CheckBox ID="chk2" Text="2" runat="server" onclick="javascript:Get(this);" />
                    <asp:CheckBox ID="chk3" Text="3" runat="server" onclick="javascript:Get(this);" />
                    <asp:CheckBox ID="chk4" Text="4" runat="server" onclick="javascript:Get(this);" />
                    <asp:CheckBox ID="chk5" Text="5" runat="server" onclick="javascript:Get(this);" />

                    <asp:HiddenField ID="hidField" runat="server" />
                    <asp:Button ID="btnSubmit" runat="server" Text="Create" OnClick="btnSubmit_Click" />
    <hr/>
      <asp:Label ID="lblHidValue" runat="server"></asp:Label>
   </div>   

现在在aspx.cs中,page_load包含以下内容:

 lblHidValue.Text ="In page_load "+ hidField.Value;

和按钮点击事件如下:

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        lblHidValue.Text += "<br/>In button click " + hidField.Value;

    }

请检查这些是否可以解决您的问题。