本文转自:http://www.cnblogs.com/beiguren/archive/2010/05/24/1742926.html

在Asp.net中,有时候需要禁用掉一个a链接元素.

在服务器端,比较容易;只需要设置LinkButton的Enabled属性即可.

那么在客户端,如何使用javascript来实现呢? 如果你想当然的认为,使用a.disabled=true就能实现,那就错了.

正确的方法是:同时设置disabled属性和href属性:

 )禁用a元素;

 // 功能: 禁用一个a元素;
// 参数:
// link: a元素对象;
function disableLink(link) {
//设置href属性
link.href = "javascript:void(0);";
//设置disabled属性
link.setAttribute("disabled", "disabled");
} )启用a元素; // 功能: 启用一个a元素;
// 参数:
// link: a元素对象;
function enableLink(link) {
// 将id中的所有下划线(_)全部替换为美元 ($)符号;
var postbackID = link.id.replace(/_/gi, "$");
// 重新设置href
link.href = "javascript:__doPostBack('" + postbackID + "','')";
// 删除disabled属性
link.removeAttribute("disabled");
} 注意:LinkButton在的客户端ID属性默认使用下划线(_)分隔符,在服务器端则默认使用美元($)分隔符;所以调用__doPostBack()方法时,需要将它的id属性转换一下,否则不会触发相关的服务器端事件. 后记: 参考了一下w3c标准,禁用a元素最后的办法是将其href属性删除,从而转换为文本元素;启用时,则添加href元素.保留disabled属性的逻辑时为了更好对应IE浏览器. // 功能: 禁用一个a元素;
// 参数:
// link: a元素对象;
function disableLink(link) {
//删除href属性,使其成为文本元素
link.removeAttribute("href");
//设置disabled属性
link.setAttribute("disabled", "disabled");
} // 功能: 启用一个a元素;
// 参数:
// link: a元素对象;
function enableLink(link) {
// 将id中的所有下划线(_)全部替换为美元 ($)符号;
var postbackID = link.id.replace(/_/gi, "$");
// 重新设置href
link.setAttribute("href", "javascript:__doPostBack('" + postbackID + "','')") ;
// 删除disabled属性
link.removeAttribute("disabled");
}

[转]禁用和启用链接(a元素|LinkButton)的js方法的更多相关文章

  1. 禁用和启用链接(a元素|LinkButton)的js方法

    4 function disableLink(link) {5     //设置href属性6     link.href = "javascript:void(0);";7    ...

  2. HTML元素ID和JS方法名重复,JS调用失败

    HTML元素ID和JS方法名重复时,JS中的重名方法无法被找到,不能执行. 修改ID或者方法名,两者不一致即可.

  3. jquery控制按钮的禁用与启用

    jquery禁用a标签方法1: $(document).ready(function () { $("a").each(function () { var textValue = ...

  4. asp.net 简单实现禁用或启用页面中的某一类型的控件

    我们在提交一个表单的时候,可能由于网络或服务器的原因,处理很慢,而用户在处理结果出来之前反复点击按钮提交.这样很容易造成不必要的麻烦甚至是错误.说了这么多,其实就是要实现一个禁用某些控件的一种功能.好 ...

  5. oracle 删除外键约束 禁用约束 启用约束

    oracle 删除外键约束 禁用约束 启用约束 执行以下sql生成的语句即可 删除所有外键约束 Sql代码  select 'alter table '||table_name||' drop con ...

  6. 改写了禁用或启用oracle数据库的约束的存储过程

    改写了网上某位大侠(最开始的源头是哪位没记住)写的禁用或启用oracle数据库所有约束的存储过程,增加了异常控制,以使发生异常时也可以执行下去. –调用过程: 执行前先 set serveroutpu ...

  7. Ubuntu通过xinput禁用及启用联想笔记本的触摸板

    查看设备列表 通过xinput先查看一些都有哪些设备 xinput     #或者 xinput list 显示结果如下 ddd@ddd:~$ xinput list   Virtual core p ...

  8. [Apple开发者帐户帮助]七、注册设备(3)禁用或启用设备

    您可以禁用和启用设备,但不能从开发者帐户中删除它.您可以禁用不再用于开发或测试的设备.但是,这样做会使包含设备的配置文件无效,并且不会增加当年设备的总数. 所需角色:帐户持有人或管理员. 在“ 证书” ...

  9. app-framework学习--nav的Scroller禁用与启用

    app-framewor(jqmobi) nav的Scroller禁用与启用 写在panel 的 data-load 方法里 禁用  $.ui.scrollingDivs.menu_scroller. ...

随机推荐

  1. Java for LeetCode 025 Reverse Nodes in k-Group

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...

  2. POJ 3977

    Subset Time Limit: 30000MS   Memory Limit: 65536K Total Submissions: 1373   Accepted: 228 Descriptio ...

  3. git merge和个git rebase的区别

    http://stackoverflow.com/questions/16666089/whats-the-difference-between-git-merge-and-git-rebase/16 ...

  4. 利用TabWidget实现底部菜单

    TabWidget类似于通话记录的界面,通过切换多个标签从而显示出多个不同内容,能够展示内容丰富的页面信息,而且彼此之间不会干扰,有利于展示.下面,通过一个例子来学习用法 首先用一个类来继承TabAc ...

  5. Ubuntu下VIM的安装和基本用法

    1.用root账户登录Ubuntu,命令行中输入vim,如果未安装会得到下面的提示: 程序“vim”已包含在下列软件包中:  * vim  * vim-gnome  * vim-tiny  * vim ...

  6. android 的四种枚举Context.MODE_PRIVATE

    标签: mode_private Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加 ...

  7. 在iOS开发中,给项目添加新的.framework

    首先需要了解一下iOS中静态库和动态库.framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我 ...

  8. CodeIgniter报错: You must use the "set" method to update an entry

    I'm using codeigniter/datamapper to develop an inviocing application and I'm getting an error that i ...

  9. ***mysql中经度纬度字段用什么存储(关于mysql的float和decimal区别)

    float,decimal精确度比较   float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的, 用于定义货币要求精确 ...

  10. jquery easy ui 1.3.4 数据表格(DataGrid)(8)

    8.1.创建DataGrid html代码 <table id="dg"></table> $("#dg").datagrid({ // ...