【问题标题】:Use asp:HiddenField value in JavaScript on page load?在页面加载时在 JavaScript 中使用 asp:HiddenField 值?
【发布时间】:2009-09-18 07:07:07
【问题描述】:

我正在尝试在回发和页面加载之后在 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)上递增它,并在每次回发时将递增的值重新分配给隐藏字段。 如果您对如何完成这项工作有任何想法,请提供帮助。

感谢您的时间。

【问题讨论】:

  • 你得到什么样的错误?我假设您已经检查了隐藏字段是否在输出 html 中。

标签: asp.net javascript


【解决方案1】:

您应该在 Get 函数中获取 hidField 值,您还有 类型强制 问题,因为输入的 '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
}

【讨论】:

  • 呵呵..你给了我一个关于如何让我的代码更好的想法。谢谢!:D
【解决方案2】:

记得将 javascript 部分放在结束标记之前,这样当它到达那里时,HiddenField 已经呈现并且可以使用了。

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

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

【讨论】:

  • 感谢 balexandre,就是这样!......我不敢相信我没有想到我应该将 java 脚本部分放在 asp 页面中的隐藏字段声明之后。
  • 这就是为什么我使用“on DOM ready”部分,所以它会像最后一样运行。我很乐意提供帮助:)
【解决方案3】:

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

<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;

    }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多