2015-10-03 58 views
0

在我的jQuery Ajax調用發佈兩次時發生了一些問題。jquery Ajax在輸入模糊上發佈兩次

function ajaxCall() { 
    this.send = function(data, url, method, success, type) { 
    type = type || 'json'; 
    var successRes = function(data) { 
      success(data); 
     }; 
     $.ajax({ 
      url: url, 
      type: method, 
      data: data, 
      cache: false, 
      success: successRes, 
      dataType: type, 
      timeout: 60000, 
      error: function (xhr, ajaxOptions, thrownError) { 
       //alert(xhr.status); 
       console.log(thrownError); 
       alert("Error could not retrieve the data"); 
      } 
     }); 
     } 
    } 

現在,這是我如何更新數據庫,當用戶關注和輸出字段。發佈作品,但它是兩個電話,我不想要。

// input type boxes update function 
$("input[type=text], input[type=checkbox], textarea, input[type=number]").focus(function(e) { 
    e.preventDefault(); 
    $this = $(this); 
    var key = $this.attr('name'); 
    var value = $this.val(); 
    var lookupTable = $this.attr('data-LookupTable'); 
    var method = "POST"; 

    $this.on('blur', function(){ 
     var call = new ajaxCall(); 
     var url = '/ajaxx/ajax.update.php'; 
     var newValue = $this.val(); 
      if (newValue!= value) { 
       var data = { 
          'keyField' : key, 
          'keyValue' : newValue, 
          'lookupTable' : lookupTable 
        } 
       call.send(data,url,method); 
      }; 
    }); 
}); 

任何幫助將不勝感激。

+0

看來你可能有事件兩個不同的項目射擊兩次什麼是「$這個」爲每個。調用?也許textarea被調用後文本,複選框等模糊被觸發? – jsh

+0

不使用一個事件來綁定另一個事件,除非你準備將它刪除也會導致許多問題複合事件處理程序。需要「焦點」事件,它沒有做任何建設性的事情 – charlietfl

回答

0

添加此行: $ this.unbind('blur'); 您前行: $ this.on(「模糊」,函數(){

regrads