我本來想監聽輸入框的焦點事件,在焦點放在輸入框上的時候才監聽回車事件,代碼以下:javascript
$("input").focus(function() { $("input").keypress(function(e) { // 回車鍵事件 var key = window.event ? e.keyCode : e.which; if (key.toString() == "13"&&check=="0") { $(".loading_left").fadeIn(100); var searchText = $(".listTitle").children("input").val(); searchText = $.trim(searchText); if (searchText != "") { search(searchText); } else { $(".search").text(""); $(".loading_left").fadeOut(300); if ($(".search p").length != 0) { $(".search p").text("輸入不能爲空"); } else { $(".search").append("<p>輸入不能爲空</p>"); } } $(this).blur(); } }); });
結果發現如上代碼不只每次焦點停在輸入框上面的時候會添加一次回車監聽事件,且每次回車都會增長一次回車監聽事件。java
解決方案就是使用return false加一個參數判斷是否已存在監聽事件。代碼以下:app
var check="0"; $("input").focus(function() { $("input").keypress(function(e) { // 回車鍵事件 var key = window.event ? e.keyCode : e.which; if (key.toString() == "13"&&check=="0") { check="1"; $(".loading_left").fadeIn(100); var searchText = $(".listTitle").children("input").val(); searchText = $.trim(searchText); if (searchText != "") { search(searchText); } else { $(".search").text(""); $(".loading_left").fadeOut(300); if ($(".search p").length != 0) { $(".search p").text("輸入不能爲空"); } else { $(".search").append("<p>輸入不能爲空</p>"); } } $(this).blur(); return false; } });