문제

제가 작업중 인 프로젝트의 개발 속도를 높이기 위해 jQuery를 사용하여 반 게릭 양식 플러그인을 작성하고 있습니다.

계획은 a jtemplates 템플릿에는 필드가 포함되어 있고, 내 플러그인은 템플릿을 통해 필요한 다국어 리소스를 찾아 서버에서 요청한 다음 JavaScript 객체로 모든 것을 포장 한 다음 "제출"에서 사용자 정의 함수로 전달됩니다.

Enter가 눌렀을 때 표준을 제외하고는 모든 것이 잘 작동합니다. 양식을 제기 할 때해야 할 코드를 제출하십시오.

opts.coreElement.find('input[type=text]').keypress(function(evt) {
    if ((evt.keyCode || evt.which) == 13) {
        opts.coreElement.find('.saveButton').click();
    }
});

문제는 Firefox에서 (적어도 다른 브라우저를 아직 확인하지 않았다), 이전에 비슷한 이름을 지은 텍스트 상자에 정보를 입력 한 경우 양식 기록을 얻는다는 것입니다. 그런 다음 ENTER를 누르면 제안 된 값 중 하나를 선택하면 양식을 제출합니다. 페이지의 첫 입력에 있다면 좋지 않습니다. 실제로는 실제로 성가시다.

명백한 해결책은 필드 주위에 형태 요소를 삽입하고 jQuery를 통해이 더미 형태의 가능한 제출을 중지하는 것 같습니다. 다행히도 ASP.NET MVC에있는 것처럼이 작업을 수행하는 사치가 있지만 그렇지 않은 경우 어떻게해야합니까? 내 플러그인이 이미 양식 안에 있는지 모르고 스스로를 유지해야한다면 어떨까요? 내가 표준 webforms asp.net에 있었다면 어떨까요? 가졌다 올바른 제출 버튼에 대한 각 입력의 리턴 키를 수동으로 "타겟팅"하려면?

아마도 이벤트 객체 자체를 통해 키 프레스의 컨텍스트를 감지하여 양식 히스토리 항목의 선택을 필터링 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

설정 autocomplete 텍스트 필드의 속성 off:

opts.coreElement.find('input[type=text]').each(function() {
     $(this).attr('autocomplete', 'off');
});

이것은 모든 주요 브라우저 (Safari, Firefox, IE)에서 작동합니다.

다른 팁

Enter] 또는 [탭] 키 이벤트의 기본 조치를 방지하려면 키 다운 이벤트를 듣고 처리/취소해야합니다.
KeyUp 또는 Keypress가 트리거 될 때까지 KeyDown의 기본값이 이미 발생했습니다.

Wulong의 답변은 효과가 있지만 질문에 완전히 답하지는 않았습니다. 제안 된 솔루션은 입력 텍스트 필드의 기록을 비활성화하는 것입니다. 그러나 KeyPressed 이벤트가 입력 텍스트 나 역사에서 나오는지 알 수있는 방법이 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top