ASP.NET linkbutton enabled=false 在 Firefox 中不起作用
ASP.NET linkbutton enabled=false does not work in Firefox
我想禁用 ASP.NET linkbutton
。我想要的是一种浏览器不允许我单击 link 按钮或至少不执行相关操作的解决方案。
我使用 WebForms
在 HTML 标记上执行以下操作:
<asp:LinkButton
id="link1"
text="Some button"
runat="server"
Enabled ="false"
/>
我使用 jQuery 事件触发 link 按钮操作:
$('#link1').click(function (evt) {
// Do something here
return false;
});
- 在 IE8 中它被禁用并且不允许点击
- 在Chrome中它没有被禁用但是id不允许点击
- 在 Firefox 41.0.1 中,我仍然可以单击 link 按钮并执行操作
如果我在后面的代码中禁用它,结果是一样的:
this.link1.Enabled = false;
不清楚您的简化中是否遗漏了它,但由于按钮客户端 ID 的更改,您的 jQuery 似乎不会执行。您将需要执行以下任一操作:
在您的控件上将 ClientIDMode
设置为 static
...
确保 id
保持为 link1
以便在您的客户端代码中使用。
<asp:LinkButton
id="link1"
text="Some button"
runat="server"
Enabled ="false"
ClientIDMode="static"
/>
或者,在运行时获取 jQuery 中控件的 ID ...
尽管这仅在您的 jQuery 在同一个 Web 表单页面而不是外部 JS 中时有效。
$('#<%= link1.ClientID %>').click(function (evt) {
// Do something here
return false;
});
随便你选择...
如果链接正确,您可以使用 jQuery 的 preventDefault() 方法来禁用 post 返回触发。
$('#link1').click(function (evt) {
evt.preventDefault();
// Do something here
});
禁用链接按钮不会阻止单击它。在我的测试中,禁用的链接按钮呈现如下:
<a class="aspNetDisabled">test</a>
jQuery 会愉快地将点击事件附加到该锚标记。您需要阻止事件触发,或更改代码,使其仅在启用按钮时执行您的操作。
这是一个可能的解决方法,它只会在启用按钮时执行您的 js:
$('#link1').click(function (evt) {
if('<%=link1.Enabled%>' === 'True') {
// Do something here
}
return false;
});
即使客户端触发禁用按钮,if语句也会导致Do something here
不运行。
我想禁用 ASP.NET linkbutton
。我想要的是一种浏览器不允许我单击 link 按钮或至少不执行相关操作的解决方案。
我使用 WebForms
在 HTML 标记上执行以下操作:
<asp:LinkButton
id="link1"
text="Some button"
runat="server"
Enabled ="false"
/>
我使用 jQuery 事件触发 link 按钮操作:
$('#link1').click(function (evt) {
// Do something here
return false;
});
- 在 IE8 中它被禁用并且不允许点击
- 在Chrome中它没有被禁用但是id不允许点击
- 在 Firefox 41.0.1 中,我仍然可以单击 link 按钮并执行操作
如果我在后面的代码中禁用它,结果是一样的:
this.link1.Enabled = false;
不清楚您的简化中是否遗漏了它,但由于按钮客户端 ID 的更改,您的 jQuery 似乎不会执行。您将需要执行以下任一操作:
在您的控件上将 ClientIDMode
设置为 static
...
确保 id
保持为 link1
以便在您的客户端代码中使用。
<asp:LinkButton
id="link1"
text="Some button"
runat="server"
Enabled ="false"
ClientIDMode="static"
/>
或者,在运行时获取 jQuery 中控件的 ID ...
尽管这仅在您的 jQuery 在同一个 Web 表单页面而不是外部 JS 中时有效。
$('#<%= link1.ClientID %>').click(function (evt) {
// Do something here
return false;
});
随便你选择...
如果链接正确,您可以使用 jQuery 的 preventDefault() 方法来禁用 post 返回触发。
$('#link1').click(function (evt) {
evt.preventDefault();
// Do something here
});
禁用链接按钮不会阻止单击它。在我的测试中,禁用的链接按钮呈现如下:
<a class="aspNetDisabled">test</a>
jQuery 会愉快地将点击事件附加到该锚标记。您需要阻止事件触发,或更改代码,使其仅在启用按钮时执行您的操作。
这是一个可能的解决方法,它只会在启用按钮时执行您的 js:
$('#link1').click(function (evt) {
if('<%=link1.Enabled%>' === 'True') {
// Do something here
}
return false;
});
即使客户端触发禁用按钮,if语句也会导致Do something here
不运行。