我希望在点击一次后禁用href。
我有以下href:
<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable();">
我添加了点击时调用的onclick事件。 我试图将href更改为空白路径,以便不能再次单击它:这是通过Javascript函数。
function clickAndDisable(link)
{
alert("Entered clickAndDisable function");
this.href="''";
}
我的代码都在xslt文件中。 我在哪里错了?
这是我的更新代码,遵循人们的建议:
<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable(this);">
<script type="text/javascript">
function clickAndDisable(link)
{
alert("Entered clickAndDisable function");
link.href="";
}
这会禁止链接工作,我希望链接在第一次点击时工作,但在任何其他时间单击它都不起作用.....
答案 0 :(得分:1)
如果你可以使用jQuery,那么你可以在第一次点击时附加一个类,然后在之后阻止默认。
$('a').on("click", function (e) {
if($('a').hasClass('clicked'){
e.preventDefault();
} else {
$('a').addClass('clicked');
}
});
This Fiddle显示了一个示例
编辑:正如Johannes H.指出的那样jQuery不是必需的,这可以在纯JS中完成,如here答案 1 :(得分:0)
首先:.href="''"
不会将href
属性设置为空值,而是设置为字符串''
。相反,.href=""
会做你尝试过的。
第二:this
引用内联onclick
处理程序中事件的源元素。但是,在事件处理程序中调用函数时,this
没有特殊处理,因此函数内对this
的任何引用都将指向window
对象。
要解决此问题,您可以:
1)将元素传递给你的函数:
<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable(this);">
function clickAndDisable(link)
{
alert("Entered clickAndDisable function");
link.href="";
}
2)使用Function.prototype.call()
<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable.call(this);">
function clickAndDisable()
{
alert("Entered clickAndDisable function");
this.href="";
}
3)使用Javascript附加事件处理程序并转储内联处理程序(在这种情况下,this
将被设置为在调用处理函数时触发处理程序的EventTarget
:
<a href="BeginPayment.aspx?PayPal=true" id ="link">
function clickAndDisable()
{
alert("Entered clickAndDisable function");
this.href="";
}
document.getElementById('link').attachEventListener('click', clickAndDisable);
第三:加载@ SamAnderson的答案,而不是为href
设置一个空值,你也可以在第一次调用时设置一个标志,并评估它是否已在以后的调用中设置,如果是,请使用{{ 1}}以防止超链接表单的正常操作发生:
Event.preventDefault()
<a href="BeginPayment.aspx?PayPal=true" id ="link">
答案 2 :(得分:0)
您可以使用像
这样的Javascript function clickAndDisable(link) {
link.onclick = function(event) {
event.preventDefault();
}
}
<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable(this);">
答案 3 :(得分:0)
我最终在使用以下javascript函数单击后禁用了href:
function check(link) {
if (link.className != "visited") {
//alert("new");
link.className = "visited";
return true;
}
//alert("old");
return false;
}