Mik*_*keT 6 .net asp.net jscript.net
我在页面上有以下JScript
<script type="text/javascript">
function ProcessButtonDisable() {
var button = $find("<%=ProcessButton.ClientID %>");
button.disabled = true;
}
</script>
Run Code Online (Sandbox Code Playgroud)
然后
<asp:Button ID="ProcessButton" Text="Process All" runat="server" OnClick="Process_Click" OnClientClick="ProcessButtonDisable()" />
Run Code Online (Sandbox Code Playgroud)
当你运行页面并解雇按钮时,我得到了
Microsoft JScript运行时错误:无法设置属性'disabled'的值:object为null或undefined
并且动态页面已将其转换为:
<script type="text/javascript">
function ProcessButtonDisable() {
var button = $find("ctl00_ctl00_BodyContentPlaceHolder_MainContentPlaceHolder_ProcessButton");
button.disabled = true;
}
</script>
<input type="submit" name="ctl00$ctl00$BodyContentPlaceHolder$MainContentPlaceHolder$ProcessButton" value="Process All" onclick="ProcessButtonDisable();" id="ctl00_ctl00_BodyContentPlaceHolder_MainContentPlaceHolder_ProcessButton" />
Run Code Online (Sandbox Code Playgroud)
因为控件是明确定义的,客户端ID似乎返回正确的id我不知道什么是错的
有帮助吗?
ps如果从代码中不清楚,这样做的目的是防止用户在初次点击后页面有时间重新加载之前点击并重新发送请求
xr2*_*0xr 13
-1表示假设JQuery的所有先前答案.$ find是 Microsoft AJAX Library定义的函数.它"提供了Sys.Application类的findComponent方法的快捷方式",它获取"对通过addComponent方法向应用程序注册的Component对象的引用".尝试使用$ get()代替,"提供Sys.UI.DomElement类的getElementById方法的快捷方式."
这个页面详细探讨了这两个函数:Ever-Useful $ get和$ find ASP.NET AJAX Shortcut Functions
Kar*_*son -5
您需要使用点符号,就像find()jQuery 函数一样,如下所示:
<script type="text/javascript">
function ProcessButtonDisable() {
var button = $.find("<%=ProcessButton.ClientID %>");
button.disabled = true;
}
</script>
Run Code Online (Sandbox Code Playgroud)
另外,如果您打算不厌其烦地在 jQuery 逻辑中查找 DOM 元素,那么就不必费心连接OnClientClick服务器控件;通过 jQuery 连接 click 事件或将元素本身传递给 JavaScript 函数:
使用 jQuery 连接点击事件(推荐):
<script type="text/javascript">
$(document).ready(function() {
$("#<%=ProcessButton.ClientID%>").click(function() {
$(this).disabled = true;
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
使用OnClientClick属性连接点击事件并传递元素(不推荐):
<asp:Button ID="ProcessButton" Text="Process All" runat="server" OnClick="Process_Click"
OnClientClick="ProcessButtonDisable(this)" />
<script type="text/javascript">
function ProcessButtonDisable(elem) {
elem.disabled = true;
}
</script>
Run Code Online (Sandbox Code Playgroud)