Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使ASP.NET按钮调用客户端javascript而不进行回发_C#_Javascript_Asp.net_.net - Fatal编程技术网

C# 如何使ASP.NET按钮调用客户端javascript而不进行回发

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中实现这一点,而不必使用按钮导致任何类型的回发 为了使示例更简单,假设我有一个界面,屏幕上只有一个标签和一个按钮,每次单击这个按钮,它都会在标签文本中添

我在ASP.NET中有一个web应用程序,后面有一个C代码。主登录页面将有一种触摸板类型的用户界面,其中有0-9按钮用于输入pin

所以,我对ASP.NET和JavaScript都是新手。当在UI上单击这些数字按钮时,不需要在服务器端执行任何操作-根本不应该有任何回发。需要做的只是在标签文本中添加一个数字。我正试图弄清楚如何在JavaScript中实现这一点,而不必使用按钮导致任何类型的回发

为了使示例更简单,假设我有一个界面,屏幕上只有一个标签和一个按钮,每次单击这个按钮,它都会在标签文本中添加一个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>

作废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,正如您所示,但由于对我编辑的问题中的示例代码进行了一次更改,我仍然在运行时遇到“预期对象”异常。不确定原因;我甚至不确定如何进行调试