input 框輸入內容延時1秒請求內容


  項目中有個功能需要對話框輸入內容后1秒執行請求獲取模糊查詢內容,為什么不即時查詢呢?因為模糊查詢東西很多呀,實時查詢太耗性能了,所以改成當用戶停止輸入 1 秒后,再對用戶輸入的內容進行請求模糊查詢。

  實現起來其實很簡單,定時器,設置1秒的請求,如果內容改變再1秒內,那么就清空,1秒后則自動執行請求。

  下面來看demo:

<div ng-controller='myCtrl'>
    <input ng-model="iValue" ng-change="valueChange(iValue)">
</div>
<script>
    angular.module("myApp",[])
    .controller("myCtrl",function($scope, $timeout){
        $scope.timer = null;
        $scope.valueChange = function (value) {
            $scope.iValue = value;
            $timeout.cancel($scope.timer);
            $scope.timer = $timeout(function () {
                alert($scope.iValue);
            }, 1000);
        }
    })
</script>

  這里我用的是 angular框架,不過思路是相同的,valueChange 方法中首先會清除一次定時器,這是為了如果他連續輸入,那么間隔只要在 1 秒以下,就會一直清除定時器,不會執行定時器定義的程序,當 1 秒后,輸入框內容未改變,那么最后一次改變創建的定時器則不會被清除,這樣就可以向后台發送數據啦~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM