2017-06-13 70 views
1

我使用jQuery代碼通過使用回車鍵來觸發輸入字段。我在另一個視圖中使用了代碼,它的工作非常完美。在新觀點中,它根本不起作用。 keyup被觸發,但不調用.bind()函數。 這裏的HTML觸發:帶.bind()的jQuery .keyup()不起作用

<div class="form-group"> 
    <h3>Customers</h3> 
    <input class="form-control" id="searchNew" placeholder="Search" name="searchNew" autofocus="" value="@form("searchValue").value"> 
</div> 

這是jQuery代碼:

$('#searchNew').bind("enterKey", function(e){ 
      console.log("Test2"); 
      $.ajaxSetup({ 
       beforeSend: function(){ 
        $('.loading').fadeIn(); 
       }, 
       complete:function(){ 
        $('.loading').fadeOut(); 
       } 
      }); 
      $.ajax({ 
       type : 'POST', 
       url : '@routes.Application.searchLicensesAdmin()', 
       data : $('#search').serialize(), 
       success : function (data) { 
        $('#license-table').html(data); 
        return false; 
       }, 
       error : function (data) { 
        console.log("Error"); 
       } 
      }); 
      return false; 
     }); 
     $('#searchNew').keyup(function(e){ 
      if(e.keyCode == 13){ 
       console.log("Test1"); 
       $(this).on("enterKey"); 
      } 
     }); 

Test1的被觸發並在控制檯中顯示出來,但Test2的甚至沒有觸發的。所以問題不在於撥打ajax,而是撥打.bind()。這可能是一個愚蠢的原因,爲什麼它不起作用,但我無法弄清楚。 jQuery包含在兩個文檔中。

回答

3

你需要$(this).trigger('enterKey')

.bind().on()做的差不多,雖然.bind()從版本3開始已棄用(所以不要使用它;))。

聲明$(this).on('enterKey')剛剛註冊了一個新的事件監聽器,用空/未定義的回調

2

你想觸發自定義事件

變化

$(this).on("enterKey"); 

$(this).trigger("enterKey"); 
0

嘗試。

$(this).trigger("enterKey"); 

建議不要使用.bind(),因爲它已被棄用。