javascript onclick方法只能使用一次

时间:2015-05-24 06:23:49

标签: javascript jquery html ajax

当我第一次点击Buttonfunc1效果很好,但是当我再次点击它时它不起作用。

即使alert('func1')无效

我做错了什么?

function func2(id) {
    $.ajax({
        url: "url2",
        type: "POST",
        data: {
            id: id,
        },
        cache: false,
        dataType: 'json',
        success: function (data) {
            if (data.status == 'success') {
                //do something
            } else {
                //do something
            }
        },
        complete: function (XMLHttpRequest, status) {
            //
        }
    });
}

function func1(id) {
    alert('func1');
    var flag = false;
    $.ajax({
        url: "url1",
        type: "POST",
        data: {
            id: id,
        },
        cache: false,
        async: false,
        dataType: 'json',
        success: function (data) {
            if (data.status == 'false') {
                //do something
                flag = true;
            }
        },
    });

    if (flag) {
        func2(id);
    }
}
<a id="xx_1" onclick="func1(1);">Button</a>
<a id="xx_2" onclick="func1(2);">Button</a>
.... 
<a id="xx_n" onclick="func1(n);">Button</a>

3 个答案:

答案 0 :(得分:0)

尝试添加func1&#34;完成:function(){}&#34;成功后

function func1(id) {alert('func1');
    var flag = false;
    $.ajax({
        url : "url1",
        type : "POST",
        data:{
            id : id,
        },
       cache : false,
       async : false,
       dataType : 'json',
       success : function(data) {
            if(data.status == 'false') {
                //do something
                flag = true;
            } 
       },
       complete: function(){}
    });

答案 1 :(得分:0)

而不是删除on点击并在jquery中执行如下操作,这将为您的按钮注册事件。

$(document).on('click', '#YOUR_BTN_ID', function({
    var flag = false;
    $.ajax({
        url : "url1",
        type : "POST",
        data:{
            id : id,
        },
       cache : false,
       async : false,
       dataType : 'json',
       success : function(data) {
            if(data.status == 'false') {
                //do something
                flag = true;
            } 
       },
       complete: function(){}
    })});

答案 2 :(得分:0)

使用Jquery取消附加onclick事件然后附加

 //This functions makes sure that madatory fields are filled
             function madatorychk (fieldid) {
               var node = document.myForm.fieldid;
               if (node.value == "" ) {
               alert("This field cannot be left empty");
               document.myForm.fieldid.focus() ;
               return false;
             }  


        function validate(){
          madatorychk(name);


        }

重复$(document).off.on('click', 'ButtonId', func1(1)); 本身

中的上述行