2014-01-14 5 views
4

사용자가 입력 한 내용의 가용성을 확인하기 위해 결과를 내 서버로 보내려면 입력 (type = 'text')이 필요합니다.jquery mobile - 휴대 기기 용 키 입력

나는 요소에 이벤트 핸들러를 추가 할 대리자를 사용

$(document).delegate('#signup', 'pageshow', function() { 
    var keydown = function(e) { 
     e = e || window.event; 
     var char = e.which || e.keyCode; 
     if (char == 8) { 
      $(".pagemessage").text("Pressed: '<BACKSPACE>'"); 
      appcheckDomainOnKeyDown(); 
     } 
     return true; 
    }; 

    var keyup = function(e) { 
     e = e || window.event; 
     var char = e.which || e.keyCode; 
     if (char == 8) { 
      appcheckDomainOnKeyUp(); 
     } 
     return true; 
    }; 

    var keypress = function(e) { 
     e = e || window.event; 
     var char = e.which || e.keyCode; 
     var str = String.fromCharCode(char); 
     $(".pagemessage").text("Pressed: '" + str +"'"); 
     if (/[a-zA-Z0-9-\._]/.test(str) || char == 8 || char == 9) { 
      appcheckDomainOnKeyDown(); 
      appcheckDomainOnKeyUp(); 
      return true; 
     } 
     return false; 
    }; 

의 핵심 투수 내 바탕 화면에 있지만 모바일 장치에서 완벽하게 작동합니다. 다행히도 특정 문자를 상자에 넣을 수있게하려는 것입니다. 그리고 문자를 지우는 백 스페이스

사실 pagemessage 요소 업데이트를 볼 수 없기 때문에 'keypress'가 트랩되지 않습니다. 나는 이것을 keyup/keydown에서 처리하려고 시도했지만 shiftKey 비트를 적용하여 실제 문자를 가져 오는 방법을 잘 모릅니다. 예를 들어 + 5를 누르면 '%'가 표시되지만 keydown에서는 shiftKey와 5가 반환됩니다.

내가 설명서를 읽고 난 '키를 누를 때'으로 찾을 수있는 가장 가까운는 '탭'이벤트,하지만 그 중 하나가 작동하지 않았다.

은 내가 '키를 누를 때'이벤트를 트래핑 시도 하나 개의 게시물에 제안 여기, 그리고 바탕 화면에서 이것은 백 스페이스를 잡아 내지 않으며 모바일 장치에서 전혀 작동하지 않습니다.

var inputEV = 'oninput' in window ? 'input' : 'keyup'; 
    $("#new_domain").off(inputEV); 
    $("#new_domain").on(inputEV, function (e) { 
     keydown(e); 
     keyup(e); 
    }); 

를하고 데스크톱 브라우저 또는 모바일 장치 중 하나에서 작동하지 않습니다 : 다른 게시물에 제안

그때 나는이 시도.

그런 다음 입력 유형을 '검색'으로 변경하려고 시도했지만 키 누르기가 명확한 버튼을 추가한다는 사실이 상당히 개선되었습니다.하지만 내 기능과 관련하여 모바일 장치에서는 아무 것도하지 않습니다.

나는 왼쪽 유일한 것은 확인 이동 버튼을 추가하는 것입니다 내가하려고하는 일에서 실행 한 생각 - 아무도

누구나 내가 필요로 무엇을 할 수 방법을 알고 :) 것을 싶어? 경우

그것은 내가

답변

2

의 keyup 일을해야 내 바탕 화면과 안드로이드 장치에 (HTC 하나, 넥서스 5) 크롬을 사용하고, 관련입니다. 이 예에서 작동합니다 : http://jsbin.com/aNEBIKA/2/. 테스트 한 결과 내 Galaxy S3에서 발견되었습니다. 각 키 누름은 텍스트가 입력 된 바닥 글 h3 요소를 업데이트합니다.

잘못된 시간에 청취자를 구속하고 있습니까? 문서는 다음과 같이 바인딩을 제안 않습니다

$(document).bind('pageinit') 

http://demos.jquerymobile.com/1.2.0/docs/api/events.html

+0

난 그냥뿐만 아니라 사업부에 물건을 인쇄 할 응용 프로그램을 udated 및 것은 (e.which || e.keyCode)이 항상에 제로 것 같다 나의 기기. 그 밖의 다른 옵션이 있습니다. 내 문제는 특정 문자를 허용하지 않으려는 의도에서 비롯된 것 같습니다. 'keypress'는 지원되지 않지만 올바른 위치는 ... 입력 상자의 마지막 값을 확인하고 유효하지 않은 경우 제거하는 키 업 트리거를 추가해야 할 수도 있습니다. –