Javascript 动态更改href jquery的onclick功能
我有一个javascript函数(用来保存表单值)已经在一个公共js文件中全局定义,现在我需要根据某些条件使用一些其他功能来覆盖它。是否有任何方法可以将javascript函数动态附加到a href onclick?我试过这种方法,但不起作用。有人能帮我吗 父html:Javascript 动态更改href jquery的onclick功能,javascript,jquery,anchor,Javascript,Jquery,Anchor,我有一个javascript函数(用来保存表单值)已经在一个公共js文件中全局定义,现在我需要根据某些条件使用一些其他功能来覆盖它。是否有任何方法可以将javascript函数动态附加到a href onclick?我试过这种方法,但不起作用。有人能帮我吗 父html: <a href="#" onclick="Save();" id="SaveLink"/> My child html调用ValidateForm函数(在Common.js中提供)来验证表单 如果无效,则停止调用g
<a href="#" onclick="Save();" id="SaveLink"/>
My child html调用ValidateForm函数(在Common.js中提供)来验证表单
如果无效,则停止调用global Save()函数
function ValidateForm()
{
var responseValid = false; //false for now
if (!responseValid)
{
$("#SaveLink").on("click", function (e) {
alert("This response is not valid");
return false;
});
}
else
{
$("#SaveLink").on("click", "Save();"); //call the global Save function
}
}
更新代码:
function ValidateForm()
{
var responseValid = false; //false for now
if (!responseValid)
{
//$("#SaveLink").prop("onclick", null);
$("#SaveLink")[0].onclick = null;
$("#SaveLink").on("click", function (e) {
alert("This response is not valid");
return false;
});
}
else
{
//call the global Save function
//$("#SaveLink").prop("onclick", null);
$("#SaveLink")[0].onclick = null;
$("#SaveLink").on("click", function (e) {
Save();
e.preventDefault();
});
}
}
您应该传递函数处理程序,而不是字符串:
$("#SaveLink").on("click", Save);
编辑:
function ValidateForm()
{
var responseValid = false; //false for now
if (!responseValid)
{
//$("#SaveLink").prop("onclick", null);
$("#SaveLink")[0].onclick = null;
$("#SaveLink").on("click", function (e) {
alert("This response is not valid");
return false;
});
}
else
{
//call the global Save function
//$("#SaveLink").prop("onclick", null);
$("#SaveLink")[0].onclick = null;
$("#SaveLink").on("click", function (e) {
Save();
e.preventDefault();
});
}
}
要防止在页面中单击onclick
,您应该在DOM就绪事件中删除它。例如:
$( function() {
$( '#SaveLink' )[ 0 ].onclick = null;
});
您需要删除
onclick
事件
function ValidateForm() {
var responseValid = false; //false for now
if (!responseValid) {
//Remove onclick attribute
$("#SaveLink").removeAttr('onclick');
//OR
$("#SaveLink").prop("onclick", null);
$("#SaveLink").on("click", function (e) {
alert("This response is not valid");
return false;
});
} else {
//call the global Save function
$("#SaveLink").on('click', Save);
}
}
JQuery代码:
$.Save=函数(id)
{
//通过使用id,您可以应用您的条件
}
单击“仅调用保存功能”感谢您的回复。但由于某些原因,在成功场景中,它首先警告“此响应无效”,然后调用Save函数。这似乎很奇怪。请尝试
$(“#SaveLink”).prop(“onclick”,null)
要删除onclick事件,我也尝试了prop,但仍然调用了alert,然后在成功场景中调用了Save函数。很抱歉,我无法更改全局函数,因为许多其他html页面都在使用相同的函数,我只能覆盖它。您是否已从html中删除了onclick
?如果是,并且您已经替换了代码来挖掘,那么一切都应该正常工作。我无法从Html页面删除onclick,因为它被许多其他页面使用,这就是为什么我试图在公共js中覆盖需要额外验证的子Html。同样的问题也会发生(即)在成功场景中,在保存功能之前会调用此警报。否-否我的意思是您应该在页面加载时设置onlcik
,而不是在ValidateForm
函数内。假设此代码将在DOM就绪时执行,则它应该是最高级的。尝试在函数ValidateForm()
之前添加我的全部代码,但如果这样做,全局保存功能将被删除,对吗?很抱歉,我无法修改全局函数
<a href="#" id="SaveLink" onclick="$.Save(this.id);"/>
JQuery Code:
$.Save=function(id)
{
//by using id you can apply your conditions
}
function ValidateForm()
{
var isSave= true;
//do your form validation
if(validation fail) //if validation fail set isSave is false
isSave=false;
return isSave;
}
function save()
{
if(ValidateForm()) //it will only execute validation is not fail
{
// do your code
}
}