我试图在回发和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)并在每次回发时将递增的值重新设置为隐藏字段。 如果您对如何完成这项工作有所了解,请提供帮助。
感谢您的时间。
答案 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;
}
请检查这些是否可以解决您的问题。