C# 如何使ASP.NET按钮调用客户端javascript而不进行回发
我在ASP.NET中有一个web应用程序,后面有一个C代码。主登录页面将有一种触摸板类型的用户界面,其中有0-9按钮用于输入pin 所以,我对ASP.NET和JavaScript都是新手。当在UI上单击这些数字按钮时,不需要在服务器端执行任何操作-根本不应该有任何回发。需要做的只是在标签文本中添加一个数字。我正试图弄清楚如何在JavaScript中实现这一点,而不必使用按钮导致任何类型的回发 为了使示例更简单,假设我有一个界面,屏幕上只有一个标签和一个按钮,每次单击这个按钮,它都会在标签文本中添加一个1。这是我的.aspx,但当我尝试运行它时,在运行时会出现“预期对象”异常 编辑:我已经修改了我的示例,将下面答案中的建议包括在内,但仍然存在问题。要复制,可以将此.aspx代码复制到新VS Web应用程序项目的default.aspx中,然后运行它并单击1按钮;它应该在标签的值后面附加一个1,但它会抛出一个“预期对象”异常C# 如何使ASP.NET按钮调用客户端javascript而不进行回发,c#,javascript,asp.net,.net,C#,Javascript,Asp.net,.net,我在ASP.NET中有一个web应用程序,后面有一个C代码。主登录页面将有一种触摸板类型的用户界面,其中有0-9按钮用于输入pin 所以,我对ASP.NET和JavaScript都是新手。当在UI上单击这些数字按钮时,不需要在服务器端执行任何操作-根本不应该有任何回发。需要做的只是在标签文本中添加一个数字。我正试图弄清楚如何在JavaScript中实现这一点,而不必使用按钮导致任何类型的回发 为了使示例更简单,假设我有一个界面,屏幕上只有一个标签和一个按钮,每次单击这个按钮,它都会在标签文本中添
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestJavascript._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Table ID="baseTable" runat="server" HorizontalAlign="Center">
<asp:TableRow ID="labelRow" runat="server" HorizontalAlign="Center" Width="100" Height="30">
<asp:TableCell ID="labelCell" runat="server" HorizontalAlign="Center" Width="100%" Height="100%" BorderStyle="Solid" BorderWidth="1px">
<asp:Label ID="inputLbl" runat="server"/>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="buttonRow" runat="server" HorizontalAlign="Center">
<asp:TableCell ID="buttonCell" runat="server" HorizontalAlign="Center">
<asp:Button ID="btn1" runat="server" Text="1" Height="70px" Width="70px" OnClientClick="btn1Click()"/>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</div>
</form>
<script type="txt/javascript">
void btn1Click()
{
document.getElementById('<%= inputLbl.ClientID %>').value += "1";
return false;
}
</script>
</body>
</html>
作废btn1Click()
{
document.getElementById(“”).value+=“1”;
返回false;
}
非常感谢您的帮助 您可以使用asp按钮的
OnClientClick
属性,并添加返回false防止回发的代码>:
<asp:Button ID="1Btn" runat="server" Text="1" Height="70px" Width="70px"
OnClientClick="btn1Click(); return false;" />
<script type="text/javascript">
function btnAppendOneClick()
{
var updatedLabel = document.getElementById('<%=inputLbl.ClientID %>');
updatedLabel.innerHTML = updatedLabel.innerHTML + "1";
return false;
}
</script>
您可以使用asp按钮的OnClientClick
属性,并添加返回false防止回发的代码>:
<asp:Button ID="1Btn" runat="server" Text="1" Height="70px" Width="70px"
OnClientClick="btn1Click(); return false;" />
<script type="text/javascript">
function btnAppendOneClick()
{
var updatedLabel = document.getElementById('<%=inputLbl.ClientID %>');
updatedLabel.innerHTML = updatedLabel.innerHTML + "1";
return false;
}
</script>
使用返回false代码>语句,从回发开始停止;如果需要回发,则返回true代码>来自函数
<script type="text/javascript">
void btn1Click()
{
this.inputLbl.Text += "1";
return false;
}
</script>
作废btn1Click()
{
this.inputLbl.Text+=“1”;
返回false;
}
使用返回false代码>语句,从回发开始停止;如果需要回发,则返回true代码>来自函数
<script type="text/javascript">
void btn1Click()
{
this.inputLbl.Text += "1";
return false;
}
</script>
作废btn1Click()
{
this.inputLbl.Text+=“1”;
返回false;
}
首先,变量名称不应以数字开头,因此应将1Btn
替换为有意义的名称(btnAppendOne
)
在页面加载
方法中,将onclick
客户端事件绑定到按钮
:
btnAppendOne.Attributes.Add("onclick", "return btnAppendOneClick();");
使用正确的javascript(返回false
应取消回发):
函数btnAppendOneClick()
{
var updatedLabel=document.getElementById(“”);
updatedLabel.innerHTML=updatedLabel.innerHTML+“1”;
返回false;
}
首先,变量名不应以数字开头,因此应将1Btn
替换为有意义的名称(btnAppendOne
)
在页面加载
方法中,将onclick
客户端事件绑定到按钮
:
btnAppendOne.Attributes.Add("onclick", "return btnAppendOneClick();");
使用正确的javascript(返回false
应取消回发):
函数btnAppendOneClick()
{
var updatedLabel=document.getElementById(“”);
updatedLabel.innerHTML=updatedLabel.innerHTML+“1”;
返回false;
}
您的脚本标记中有一个输入错误。。第一行(1)
作废btn1Click()
{
document.getElementById(“”).value+=“1”;
返回false;
}
脚本标记中有一个输入错误。。第一行(1)
作废btn1Click()
{
document.getElementById(“”).value+=“1”;
返回false;
}
值得注意的是,他的按钮还没有链接到调用他的函数我也试过了,但即使在我将函数链接到按钮的OnClientClick事件之后,它仍然失败,出现了“预期对象”错误,比如它找不到inputLbl对象,或者该对象为null等等。标签一开始没有任何文本;是否需要在页面加载时将其初始化为空字符串或其他内容?您需要document.getElementById('我已经尝试过了。请参见上面编辑的示例代码;我得到了一个“预期对象”单击btn1时出现异常。据我所知,我已经实现了它的建议方式;您是否看到了我没有看到的任何错误?请注意,他的按钮尚未链接到调用他的函数。;)我也尝试了这一点,但即使在我将我的函数链接到按钮的OnClientClick事件后,它仍会失败,并出现“预期对象”错误,就像找不到inputLbl对象,或者该对象为null之类的。标签一开始没有任何文本;是否需要在页面加载时将其初始化为空字符串或其他内容?您需要document.getElementById('我已经尝试过了。请参见上面编辑的示例代码;我得到了一个“预期对象”单击btn1时出现异常。我已经实现了我所能说的建议;您是否看到了我没有看到的任何错误?我刚刚编辑了我的答案,我首先读到您希望增加标签的值,但您希望在其上附加一个“1”。我尝试了此解决方案,但仍然得到了一个“预期对象”运行时出现异常,因为它找不到inputLbl。另外,它说自动回邮属性对asp按钮无效。我使用的是针对.NET 3.5的VS 2008。好的,您在函数名称之前设置了void
,而不是函数
。自动回邮不适用于asp按钮,因此我想只是返回false应该可以阻止回发。尝试将其从void更改为function,正如您所示,但由于对我编辑的问题中的示例代码进行了一次更改,我仍然在运行时遇到“预期对象”异常。不确定原因;我甚至不确定如何进行调试