【问题标题】:Why button doesnt fire javascript function为什么按钮不触发javascript函数
【发布时间】:2014-06-05 10:17:00
【问题描述】:

我不知道为什么按钮点击功能没有在 Javascript 中触发,我错过了什么吗?我试过了:

aspx.page

<input type="button" id="tglBtn"  onclick="changeName(this) "    runat="server"  />  

<input type="button" id="tglBtn" OnClientClick="changeName(this);" runat="server"  />  

   <input type="button" id="tglBtn" OnClientClick="changeName(this);return false;" runat="server"  /> 

Javascript

function changeName(obj) {
        alert("hey");
        if ($(obj).attr("Value") == "Open") {
            $(obj).val("Close");
        }
        else {
            $(obj).val("Open");
        }   
    }

【问题讨论】:

  • 假设您已正确包含脚本,您拥有的第一个版本应该可以正常工作:jsfiddle.net/DyU7k您检查控制台是否有任何错误?
  • 你是否包含了 jquery 文件?
  • 是的,我有 jquery 文件。

标签: javascript jquery html asp.net button


【解决方案1】:

实际上它对我来说很好用。

这是我的代码:

<script src="js/jquery.min.js" type="text/javascript"></script>

<input type="button" id="tglbtn" onclick="changeName(this)" runat="server" />

    <script type="text/javascript">
        function changeName(obj) {

            alert("hey");
            if ($(obj).attr("Value") == "Open") {
                $(obj).val("Close");
            }
            else {
                $(obj).val("Open");
            }
        }
    </script>

你有 jQuery 吗?如果你还没有添加一个 jQuery..

【讨论】:

    【解决方案2】:

    我认为你犯了一个错误...现在试试这个...

    <asp:Button id="tglBtn"  OnClientClick="return changeName()" runat="server"><asp>
    

    【讨论】:

    • 您可以将 runat="server" 放在任何 HTML 元素上。
    【解决方案3】:

    OnClientClick 适用于 asp.net 控件(不适用于您已在服务器上运行的 html 控件)。

    所以只剩下第一行了。

    <input type="button" id="tglBtn"  onclick="changeName(this) "    runat="server"  />
    

    这一行是运行的,但同时你做 Post Back,所以你可能没有时间看 javascript 的结果。当然你可能还有一些其他的 javascript 错误,如果你打开浏览器控制台,你可以看到 javascript 是否运行没有错误。

    【讨论】:

      【解决方案4】:

      改用 ASP:Button。 见下面代码

      <asp:Button runat="server" id="tglBtn" onclientclick="return changeName()" Text="submit" />
      //in head section
      <script language="Javascript">
         function changeName()
         {
            alert("I am in function");
            document.getElementById("tglBtn").value = "New name";
            return false;
         }
      </script>
      

      它会解决你的问题

      【讨论】:

      • -1 因为按钮不会在您键入时呈现 id。其次,您可以传递this,而不是通过 id 再次查看。要获得渲染,您可以在页面上键入 &lt;%=tglBtn.ClientID%&gt;,或应用静态名称。
      • @Șhȇkhaṝ 好的,这是好的编程吗?随意离开它?因为你完全让它随机 - 你把它留在了 asp.net 如何决定如何创建 id,如果 asp.net 更改了一些颠覆并将其更改为破坏性更改,去更改你所有的页面......除此之外,这是一个无论您将其放在第一页上,都必须执行的剪切代码。
      猜你喜欢
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多