jquery禁用控件并在单击时发出警报

jquery禁用控件并在单击时发出警报,jquery,Jquery,我有一个使用jquery、jquery UI和ajax的asp.NET4.0页面 问题:页面可能正在显示记录标记为不可编辑的数据(在代码中,不是来自SQL Server db记录状态)。仅供参考:页面将在从服务器加载时进行标记,而不是基于某些用户输入 当标记为不可编辑时,我需要对页面执行许多操作 禁用许多选择和文本输入及按钮 当用户试图编辑(或单击)这些控件时,我需要显示警报 有人能帮我用最巧妙的方法来完成这件事吗 我是否将一个类应用于所有这些控件,然后将jquery事件绑定到该类?禁用的表单元

我有一个使用jquery、jquery UI和ajax的asp.NET4.0页面

问题:页面可能正在显示记录标记为不可编辑的数据(在代码中,不是来自SQL Server db记录状态)。仅供参考:页面将在从服务器加载时进行标记,而不是基于某些用户输入

当标记为不可编辑时,我需要对页面执行许多操作

禁用许多选择和文本输入及按钮

当用户试图编辑(或单击)这些控件时,我需要显示警报

有人能帮我用最巧妙的方法来完成这件事吗


我是否将一个类应用于所有这些控件,然后将jquery事件绑定到该类?

禁用的表单元素不会触发
单击事件,但它们的父元素仍然可以看到它。您可以钩住这些字段的容器的
click
事件(例如
表单
),然后查看单击了哪个元素(通过
event.target
属性,jQuery确保跨浏览器正确设置了该属性)。如果是这些禁用元素之一,则可以执行警报:

$("selector_for_the_form").click(function(event) {
  if (event.target.disabled) {
    alert("You can't click the " + event.target.name + " field");
  }
});

这只适用于创建事件并允许其传播的浏览器。Firefox和Opera没有;IE和Chrome都有


而不是禁用表单字段,您可以考虑设置它们<代码> Read Ong//C>。这使事情更加可靠()。

编辑:刚刚意识到你的帖子顶部写着ASP对不起:p 但是,使用ASP可能还有其他方法来做同样的事情

您可能需要切换正在使用的任何文本框或输入的只读状态

如果您使用的是PHP,则可以通过GET传递一个变量,并使用该变量告诉元素为只读,甚至禁用

例如


这里有逻辑问题:一旦禁用某个元素,该元素上就没有单击事件。它被禁用了。
<input type="textbox" name="box01" <?php if ($_GET["disable"]==true) {echo 'readonly="readonly";} ?> />