jQuery Mobile 按钮单击事件不起作用
Posted
技术标签:
【中文标题】jQuery Mobile 按钮单击事件不起作用【英文标题】:jQuery Mobile button click event not working 【发布时间】:2013-06-01 03:05:39 【问题描述】:我是 JQuery Mobile 的新手,所以请原谅这个可能很简单的问题。
我有一个按钮:
<a id="btnSort" href=# data-role="button"
runat="server" onclick="Click_btnSort">Sort</a>
和代码隐藏事件处理程序:
protected void Click_btnSort(object sender, EventArgs e)
...
我在这个方法的开头有一个断点,但是当我点击按钮时它不会触发。
PS。我没有使用任何字段验证器。
有什么建议吗?
【问题讨论】:
你好。抱歉,这个“受保护的 void Click_btnSort(object sender, EventArgs e)”不是 javascript。你想跑什么?<a id="btnSort" href=# data-role="button" onclick="Click_btnSort()">Sort</a>
顺便问一下,你的方法是用 JavaScript 定义的吗?
@AurelioDeRosa 即 ASP.NET 和 C#。
该方法来自页面的代码隐藏不是 JavaScript。我期待因为我使用了 runat="server" 我将能够使用 c# 代码隐藏来处理事件。我错了吗?
您是否尝试过添加监听器$(document).on('click', '#btnSort', function () Click_btnSort(); );
?
【参考方案1】:
您的事件被 nog 触发的原因是因为您使用 html a 元素,该元素不会触发回发(也许当您将元素 autopostback 属性设置为 true 时会触发,不确定这是否适用于 a 元素)。
当您想在后面的代码中使用 ASP.NET 按钮单击事件(在单击时执行服务器端操作)时,您可能最好使用 ASP:Button 或 LinkButton 元素,它们开箱即用。
当您想使用客户端点击事件(例如,使用 jQuery,在点击时执行客户端操作)时,您最好为元素添加一个事件监听器,如下所示:
$(document).on('click', '#btnSort', function ()
// client side stuff here
);
编辑:
请参阅此处了解与 jQuery 的基本客户端事件绑定。如果这看起来不熟悉,请阅读 JavaScript / jQuery 基础知识,这将是值得的时间
http://jsfiddle.net/6mYQN/1/
【讨论】:
【参考方案2】:由于<a>
标签与服务器端控件无关,所以我想这不会像那样发生。
即使在服务器上运行,您的代码仍然会在 javascript 函数中查找 Click_btnSort
,而不是在后面的代码中,因此您应该在脚本/javascript 标记中添加一个函数,其名称将在 onclick
事件中调用.
【讨论】:
【参考方案3】:虽然这是一篇旧文章,但您可以创建一个
<asp:Button ID="btnServerSort" style="display:none;" runat="server" Text="SORT" OnCommand="Click_btnServerSort" ..>
具有关联的服务器端事件。
然后修改代码如下
<a id="btnSort" href=# data-role="button" data-ajax="false" runat="server" onserverclick="Click_btnServerSort" >Sort</a>
我希望这会有所帮助。
【讨论】:
以上是关于jQuery Mobile 按钮单击事件不起作用的主要内容,如果未能解决你的问题,请参考以下文章