取消绑定后无法绑定点击

时间:2013-11-27 12:51:16

标签: jquery

在解除绑定后尝试将点击绑定回按钮时遇到问题。

当代码文本字段中有更改事件时,该按钮将解除绑定。更改将检查数据库中是否存在重复。如果没有重复,它将绑定返回单击“保存”按钮,但它不起作用。

jQuery代码

$(document).ready(function() {

  $('#glaccountssomgr_save_btn').on('click', submitGLAccount);

  $('#glaccountssomgr_acount_code').change(function(event) {

    $('#glaccountssomgr_save_btn').off('click', submitGLAccount);
    var inputCode = $('#glaccountssomgr_acount_code').val();
    $.ajax({
      url: '<?php echo Router::url(array('controller' => 'GeneralLedgerAccountsSOMgr', 'action' => 'glaCheckDuplicate', '')); ?>',
      data: {code: inputCode},
      type: 'POST',
      success:function(data)
      {
        if(data)
        {
          var dupResults = jQuery.parseJSON(data);
          if(dupResults.isDuplicate)
          { 
            $('#glaccountssomgr_save_btn').off('click');
            alert("The GL Account is already in use. Please use another Code");
            $('#glaccountssomgr_acount_code').focus();
            return false;
      }
      else
      {
        alert("No duplicate");
        //the below does not get call
        $('#glaccountssomgr_save_btn').on('click', submitGLAccount);
      }
    }
    else
    {
      alert("Error in checking GL Account Code. Please try again");
      return false;
    }
  },
  error:function(data)
  {
    alert("Unexpected Error. Please try again");
  }
   });
  });
});

function submitGLAccount()
{
  //performs validation checking and data submission
  alert("I'm here");
}

保存按钮

<a href="#" id="glaccountssomgr_save_btn" name="glaccountssomgr_save_btn" data-    
role="button" data-icon="check" data-inline="true" data-ajax="false" data-theme="b"    
data-iconpos="right">Save</a>

如果焦点从“代码”转到其他表单元素,则单击“保存”按钮只会再次重新绑定。

我做错了吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用bind和unbind:

$(&#39;#glaccountssomgr_save_btn&#39;)。bind(&#39;点击&#39;,submitGLAccount); $(&#39;#glaccountssomgr_save_btn&#39;)。取消绑定(&#39;点击&#39;,submitGLAccount);

编辑: 您可以将数据传递给事件处理程序

function submitGLAccount(event){
   if(event.data.btnstate=='off'){
         return false;
   }else{
         //continue executing the code
   }
}
$( "button" ).on( "click", {
     btnstate: "off"
}, submitGLAccount);

$( "button" ).on( "click", {
     btnstate: "on"
}, submitGLAccount);