>웹 프론트엔드 >JS 튜토리얼 >jquery 모바일 키보드 키업 실패 해결방법 공유

jquery 모바일 키보드 키업 실패 해결방법 공유

黄舟
黄舟원래의
2017-06-27 14:23:192660검색

최근 작업한 터치스크린 버전 프로젝트에서 입력값을 모니터링하는 문제가 발생했습니다. 키업을 사용하면 휴대폰 키보드의 다른키를 누르는 데는 문제가 없었으나 삭제 키는 모니터링이 되지 않았습니다. . 온라인에서 다음 해결책을 찾았습니다.

(원문 출처: http://blog.csdn.net/kongjiea/article/details/40186121)

검색창은 사용자가 입력한 값을 기준으로 실시간으로 검색합니다. 자연스럽게 키업이 생각났는데, 병음 상태에서 문제가 없었을 때,

질문 1: 중국어 입력 방식으로 전환했더니 문제가 나왔고, 키업 이벤트가 제대로 작동하지 않더라고요. 나중에 인터넷에서 검색해보니

라는 아이디어가 나왔습니다.
질문 2:

WeChat 공개 플랫폼이 개발될 때

고객님께서 "입력창에 내용을 입력하면 입력창 뒤에 클리어 버튼이 표시됩니다"라고 문의하셨습니다. "keyup" 이벤트 사용시 중국어 입력방식의 일부 키가 눌리는 현상이 발생합니다. keyup 이벤트가 유효하지 않습니다.

방법1: 주로 검색창에 대한 focus 이벤트를 잠시 후 검색하고 코드를 게시합니다.

<script language="javascript" type="text/javascript" src="jquery.js"></script>  
    <script>  
  
    $(function () {  
        $(&#39;#wd&#39;).bind(&#39;focus&#39;,filter_time);  
    })  
  
    var str = &#39;&#39;;  
    var now = &#39;&#39;  
    filter_time = function(){  
        var time = setInterval(filter_staff_from_exist, 100);  
        $(this).bind(&#39;blur&#39;,function(){  
            clearInterval(time);  
        });  
    };  
  
    filter_staff_from_exist = function(){  
        now = $.trim($(&#39;#wd&#39;).val());  
        if (now != &#39;&#39; && now != str) {  
            console.log(now);  
        }  
        str = now;  
    }  
    </script>
방법 2: 입력 및 속성 변경 이벤트를 사용하여 문제 해결,

내 테스트는 dom2의 바인딩 방법으로만 사용할 수 있습니다

document

.getElementById('box').addEventListener('input',function(){...dosomething...},false);

html>  
<head>  
<script type="text/javascript" src="http://www.zlovezl.cn/static/js/jquery-1.4.2.min.js"></script>  
</head>  
<body>  
    <p>  
        使用oninput以及onpropertychange事件检测文本框内容:  
    </p>  
    <p>  
        <input type="text" name="inputorp_i" id="inputorp_i" autocomplete="off"/>  
        <span id="inputorp_s"></span>  
        <script type="text/javascript">  
            //先判断浏览器是不是万恶的IE,没办法,写的东西也有IE使用者  
            var bind_name = &#39;input&#39;;  
            if (navigator.userAgent.indexOf("MSIE") != -1){  
                bind_name = &#39;propertychange&#39;;  
            }  
            $(&#39;#inputorp_i&#39;).bind(bind_name, function(){  
                $(&#39;#inputorp_s&#39;).text($(this).val());  
            })  
        </script>  
    </p>  
</body>  
</html>
그러나 어떤 사람들은 JQ 바인딩을 사용할 수 있다고 말합니다. as:

$(&#39;#input&#39;).bind(&#39;input propertychange&#39;, function() {  
                alert("....")  
            });

또는 기본:

<script type="text/javascript">  
// Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9  
function OnInput (event) {  
    alert ("The new content: " + event.target.value);  
}  
// Internet Explorer  
function OnPropChanged (event) {  
    if (event.propertyName.toLowerCase () == "value") {  
        alert ("The new content: " + event.srcElement.value);  
    }  
}   
</script>  
  
<body>  
    <input type="text" oninput="OnInput (event)" onpropertychange="OnPropChanged (event)" value="Text field" />  
</body>
마지막으로 주목해야 할 점은

🎜🎜입니다: oninput "onpropertychange" 및 "onpropertychange" 두 이벤트는 IE9에서 작은 버그를 가지고 있습니다. 즉, 마우스 오른쪽 버튼 클릭 메뉴의 잘라내기 및 삭제 명령을 통해 콘텐츠를 삭제할 때 트리거되지 않습니다. 그러나 다른 버전의 IE는 정상이며, 현재로서는 별로 좋지 않습니다. 그러나 oninput 및 onpropertychange는 여전히 입력 상자 값 변경을 모니터링하는 가장 좋은 방법입니다.🎜🎜

위 내용은 jquery 모바일 키보드 키업 실패 해결방법 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.