动态更改href jquery的onclick功能

时间:2014-01-30 18:33:02

标签: javascript jquery anchor

我有一个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();
        });
    }
}

4 个答案:

答案 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只调用保存功能