모바일 사파리에서 autocapitalize가 JavaScript로 꺼질 수 있습니까?
-
16-09-2019 - |
문제
Mobile Safari는 호출 된 입력 요소의 속성을 지원합니다 autocapitalize
[여기에 문서화되었습니다], 'OFF'로 설정하면 iPhone이 해당 필드로 텍스트 입력을 대문자를 대문자로 설정하면 URL 또는 이메일 필드에 유용합니다.
<input type="text" class="email" autocapitalize="off" />
그러나이 속성은 HTML 5 (또는 내가 아는 한 다른 사양)에서 유효하지 않으므로 HTML에 포함 시키면 유효하지 않은 HTML 페이지가 생성됩니다. 내가하고 싶은 것은이 속성을 특정 필드 onload에 추가 할 수 있습니다. 다음과 같은 JavaScript :
$(document).ready(function(){
jQuery('input.email, input.url').attr('autocapitalize', 'off');
});
Firefox 및 Desktop Safari의 올바른 속성을 추가하지만 Mobile Safari에서는 아무것도하지 않는 것 같습니다.
해결책
이것은 iPhone OS 3.0에서 고정되어야합니다. 어떤 버전의 iPhone OS를 시도하고 있습니까?
Email: <input id="email" type="text"><br>
URL: <input id="url" type="text"><br>
<script>
//document.getElementById("email").autocapitalize = 'off';
//document.getElementById("url").autocapitalize = 'on';
document.getElementById("email").setAttribute('autocapitalize', 'off');
document.getElementById("url").setAttribute('autocapitalize', 'on');
alert(document.body.innerHTML);
</script>
다른 팁
참고 사항. "이메일"키보드를 자동으로 가져 오기 위해 "이메일"으로 입력 유형을 지정하여 iOS의 사용자 경험을 훨씬 더 향상시킬 수 있습니다 (이메일 입력을위한 약간 더 나은 문자).
<input type="email" class="email" autocapitalize="off" />
다음은 문서입니다 입력 유형이 iOS 키보드를 제어 할 수있는 방법.
스크립트를 통해 추가하거나 마크 업에 추가하면 유효하지 않습니다. 스크립트를 통해 추가하면 유효성 검사기가 알 수 없습니다.
마크 업에 넣고 옆에 댓글을 달아주세요. <!-- the "autocapitalize" attribute is an Apple proprietary extension for the iPhone to change its IME behaviour -->
, 이렇게하면 유효성 검사기에서 코드를 보는 사람들은 무슨 일이 일어나는지 알게됩니다.
유용한 기능이라면 엄격한 검증과 사용자 경험을 선택하면됩니다. 개인적으로, 나는 어느 날 UX를 선택합니다.
그래서 ddkilzer가 제안한 것처럼 jQuery가 할 수는 없지만 일반적인 JavaScript를 할 수 없었습니다. 따라서 특정 클래스가있는 모든 입력에 AutoCapitalize = 'Off'옵션을 적용하기 위해이 기능을 구성했습니다.
$(document).ready(function(){
// disable autocapitalize on .url, .email fields
unautocapitalize('url');
unautocapitalize('email');
});
function unautocapitalize(cssClass){
var elems = document.getElementsByClassName(cssClass);
for (var j = 0; j < elems.length; j++){
elems[j].setAttribute('autocapitalize', 'off');
}
}