我在ASP.NET中有一个带有C#代码的Web应用程序。主登录页面将有一种触摸板类型UI,其中有0-9的按钮可以输入#。
所以,我是ASP.NET和JavaScript的新手。当在UI上单击这些数字按钮时,不需要在服务器端执行任何操作 - 根本不应该有任何回发。所有需要做的就是在标签的文本上附加一个数字。我试图弄清楚如何在JavaScript中做到这一点,没有按钮导致任何类型的回发。
为了使示例更简单,我们只是说我在屏幕上有一个带有单个标签和单个按钮的UI,每次单击此单个按钮时,它应该在标签的文本上附加1。这是我的.aspx,但是当我尝试运行它时,我在运行时得到一个“对象预期”异常......
编辑:我修改了我的示例以包含以下答案中提出的建议,但仍然存在问题。要重现,可以将此.aspx代码复制到新VS Web应用程序项目的default.aspx中,然后运行它并单击1按钮;它应该在标签的值上附加1,但它会抛出“对象预期”异常。 <%@ 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>
非常感谢任何帮助!
答案 0 :(得分:14)
您可以使用asp按钮的OnClientClick
属性并添加阻止回发的return false;
:
<asp:Button ID="1Btn" runat="server" Text="1" Height="70px" Width="70px"
OnClientClick="btn1Click(); return false;" />
答案 1 :(得分:1)
使用return false;
语句,它将停止回发;如果你需要从函数回发return true;
。
<script type="text/javascript">
void btn1Click()
{
this.inputLbl.Text += "1";
return false;
}
</script>
答案 2 :(得分:1)
首先,变量名称不应以数字开头,因此请将1Btn
替换为有意义的名称(btnAppendOne
)。
使用onclick
方法将Button
客户端事件绑定到PageLoad
:
btnAppendOne.Attributes.Add("onclick", "return btnAppendOneClick();");
使用正确的javascript(return false
应该取消回发):
<script type="text/javascript">
function btnAppendOneClick()
{
var updatedLabel = document.getElementById('<%=inputLbl.ClientID %>');
updatedLabel.innerHTML = updatedLabel.innerHTML + "1";
return false;
}
</script>
答案 3 :(得分:0)
您的脚本标记中有拼写错误。第一行(1)
<script type="**text**/javascript">
void btn1Click()
{
document.getElementById('<%= inputLbl.ClientID %>').value += "1";
return false;
}