我有一个javascript函数(保存表单值)已经在一个公共的js文件中全局定义,现在我需要根据某些条件覆盖其他一些功能。有什么方法可以动态地将javascript函数附加到href onclick吗?我试过这种方式,但它没有用。有人可以帮帮我吗?
父html:
<a href="#" onclick="Save();" id="SaveLink"/>
Common.js:
function Save()
{
//do something
}
我的子html调用ValidateForm函数(在Common.js中可用)来验证表单 如果它无效,则停止调用全局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();
});
}
}
答案 0 :(得分:0)
你应该传递函数处理程序,而不是String:
$("#SaveLink").on("click", Save);
修改强>
要阻止页面中的onclick
,您应该在DOM ready事件中将其删除。例如:
$( function() {
$( '#SaveLink' )[ 0 ].onclick = null;
});
答案 1 :(得分:0)
您需要删除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);
}
}
答案 2 :(得分:0)
<a href="#" id="SaveLink" onclick="$.Save(this.id);"/>
JQuery Code:
$.Save=function(id)
{
//by using id you can apply your conditions
}
答案 3 :(得分:0)
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
}
}
OnClick只调用保存功能