JS 對輸入判斷變化屏蔽中文輸入法連續輸入時觸發的事件


//智能搜索提示
    IntelligenceSearch: function IntelligenceSearch() {

        $('#keyWord').on('input', function () {
            if ($(this).prop('comStart')) return;    // 中文輸入過程中不截斷
            var url = $('#hKeyWord').val();
            var data = { keyword: $('#keyWord').val() };
            $('#words').html('');
            imcis.ajax(url, data, false, function (data) {
                var option = "";
                $.each(data, function (key, value) {
                    option += '<option value=' + value + '>';
                });
                $('#words').html(option);
                //alert('H');
            });
        }).on('compositionstart', function () {
            $(this).prop('comStart', true);
        }).on('compositionend', function () {
            $(this).prop('comStart', false);
        });
    }
復制代碼

HTML以及加載方法:

復制代碼
<input list="words" autocomplete="off" id="keyWord" style="font-size:12px;" type="text" placeholder="請輸入關鍵字" />
                    <datalist id="words" style="background:red">

                        @*<option value="Internet Explorer">
                        <option value="Firefox">
                        <option value="Chrome">
                        <option value="Opera">
                        <option value="Safari">
                        <option value="Sogou">*@
                    </datalist>
復制代碼

采用H5的datalist去提示

 $(function () {
            MedicalCase.IntelligenceSearch();
        });

前台加載一下

 

 

具體的原理如下:

復制代碼
      $(function () {
                $('#text').on('input', function () {
                    if ($(this).prop('comStart')) return;    // 中文輸入過程中不截斷

                    var value = $(this).val();
                    console.log('當前輸入:' + value);
                    //if (Str.byteLen(value, 3) > 24) {
                    //    $(this).val(Str.getMaxlen(value, 24));
                    //}
                }).on('compositionstart', function () {
                    $(this).prop('comStart', true);
                    console.log('中文輸入:開始');
                }).on('compositionend', function () {
                    $(this).prop('comStart', false);
                    console.log('中文輸入:結束');
                });
            })
復制代碼

開始和結束代表着事件的開始捕捉和結束捕捉

,這個做的更好一些能在后台加入緩存處理嗎。還請大神指教

積累小的知識,才能成就大的智慧


免責聲明!

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



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