表单提交后自动定位焦点JS代码实现与无障碍设计指南
浣犲~瀹屾敞鍐岃〃鍗曠偣鍑绘彁浜わ紝缁撴灉椤甸潰涓€鐗囨瀵傗€斺€斿厜鏍囪繕鍋滅暀鍦ㄦ彁浜ゆ寜閽笂锛屾牴鏈笉鐭ラ亾鍝噷濉敊浜嗭紵杩欑鍙嶄汉绫荤殑浜や簰璁捐锛屾鍦ㄥ伔鍋疯刀璧颁綘鐨勭敤鎴凤紒浠婂ぉ鍜变滑灏辨幇寮€鎻夌浜嗚锛屾€庝箞鐢ㄥ嚑琛孞avaScript浠g爜璁╄〃鍗?娲?璧锋潵锛岄『渚胯В鍐宠闅滅敤鎴风殑鎿嶄綔闅鹃銆?/p>
馃幆 鍩虹绡囷細涓夎浠g爜鎷晳鐢ㄦ埛浣撻獙
鍏堢湅涓渶甯歌鐨勫満鏅細鎵嬫満鍙疯緭灏戜簡1浣嶏紝鎻愪氦鍚庡緱璁╁厜鏍囪嚜鍔ㄨ烦鍥為敊璇緭鍏ユ銆傚師鐢烰S鐨勨€?strong>鈥媐ocus()鏂规硶鈥?/strong>鈥嬪氨鑳芥悶瀹氾細
javascript澶嶅埗document.querySelector('#phone').focus();
浣嗘柊鎵嬪父鎺夎繘涓変釜鍧戯細
- 鈥?strong>鈥嬩唬鐮佹墽琛屽お鏃┾€?/strong>鈥嬶細DOM杩樻病鍔犺浇瀹屽氨鎬ョ潃璋冪敤锛岀粨鏋滄姤閿欐壘涓嶅埌鍏冪礌锛堢綉椤?鎻愬埌瑕佺敤DOMContentLoaded浜嬩欢锛?/li>
- 鈥?strong>鈥嬮敭鐩樹笉寮硅捣鈥?/strong>鈥嬶細iOS寰俊娴忚鍣ㄦ湁瀹夊叏闄愬埗锛屽緱浼€犵偣鍑讳簨浠讹紙缃戦〉4鐨勬浛韬偣鍑绘硶锛?/li>
- 鈥?strong>鈥嬮〉闈贡璺斥€?/strong>鈥嬶細鑱氱劍鏃惰Е鍙戞粴鍔紝鐢?code>focus({preventScroll:true})瑙e喅锛堢綉椤?鐨勯槻鎶栧姩鎶€宸э級
杩欐椂鍊橤etFocusJS搴撳氨娲句笂鐢ㄥ満浜嗭紙缃戦〉1锛夛紝瀹冪殑閾惧紡API绠€鐩村儚寮€鎸傦細
javascript澶嶅埗// 杈撳叆婊?浣嶉獙璇佺爜鑷姩璺虫彁浜ゆ寜閽?/span> GetFocusJS .on('#code-input', 'input', e => e.target.value.length ===6) .moveTo('#submit-btn');
鈾?鏃犻殰纰嶅繀淇锛氬埆璁╄闅滅敤鎴锋姄鐙?/h3>
浣犱互涓鸿嚜鍔ㄨ仛鐒﹀彧鏄柟渚挎櫘閫氫汉锛熷灞忓箷闃呰鍣ㄧ敤鎴锋潵璇达紝杩欐槸鐢熸鏀稿叧鐨勫姛鑳斤紒鏌愭斂鍔pp灏辨牻杩囪窡澶粹€斺€旇嚜鍔ㄨ仛鐒﹁韩浠借瘉瀛楁瀵艰嚧瑙嗛殰鐢ㄦ埛璇搷浣滐紝鎶曡瘔鐜囬鍗?2%锛堢綉椤?妗堜緥锛夈€?/p>
鈥?strong>鈥嬪繀椤婚伒瀹堢殑涓夊ぇ閾佸緥鈥?/strong>鈥嬶細
- 鈥?strong>鈥婣RIA灞炴€у姞鎸佲€?/strong>鈥嬶細鐢?code>role="alert"鏍囨敞閿欒鎻愮ず鍖哄煙锛堢綉椤?锛?/li>
- 鈥?strong>鈥嬬劍鐐归€昏緫闂幆鈥?/strong>鈥嬶細楠岃瘉澶辫触鏃跺厛鑱氱劍閿欒鎻愮ず鍐嶈烦杞緭鍏ユ
- 鈥?strong>鈥嬮敭鐩樺鑸吋瀹光€?/strong>鈥嬶細纭繚Tab閿兘椤哄簭璁块棶鎵€鏈夊厓绱?/li>
涓句釜鍙嶉潰鏁欐潗锛?/p>
javascript澶嶅埗// 閿欒绀鸿寖锛氱洿鎺ヨ仛鐒﹁緭鍏ユ errorField.focus();
搴旇鏀规垚锛?/p>
javascript澶嶅埗// 姝g‘鍋氭硶锛氬厛璇婚敊璇彁绀?/span> document.getElementById('error-msg') .setAttribute('aria-live','polish'); errorMsg.focus(); setTimeout(() => errorField.focus(),500);
瀹炵幇鏂瑰紡 | 浠g爜閲?/th> | 鏃犻殰纰嶆敮鎸?/th> | 绉诲姩绔吋瀹?/th> |
---|---|---|---|
鍘熺敓JS | 5-10琛?/td> | 闇€鎵嬪姩澶勭悊 | 75% |
GetFocusJS搴?/td> | 2-3琛?/td> | 鍐呯疆ARIA | 92% |
馃洜锔?瀹炴垬妗堜緥锛氱櫥褰曡〃鍗曟敼閫犺
鏌愮數鍟嗗钩鍙扮櫥褰曢〉鏀圭増鍓嶏紝32%鐢ㄦ埛鍥犳壘涓嶅埌楠岃瘉鐮佽緭鍏ユ鑰屾祦澶便€傛垜浠仛浜嗕笁澶勬敼閫狅細
- 鈥?strong>鈥嬮敊璇仛鐒︹€?/strong>鈥嬶細鐢?code>scrollIntoView()灏嗛敊璇瓧娈垫粴鍔ㄥ埌瑙嗗彛锛堢綉椤?锛?/li>
- 鈥?strong>鈥嬭闊虫挱鎶モ€?/strong>鈥嬶細鎺ュ叆TTS寮曟搸鏈楄閿欒淇℃伅
- 鈥?strong>鈥嬭Е瑙夊弽棣堚€?/strong>鈥嬶細鎸姩鎻愮ず+楂樺姣斿害杈规
鏀归€犲悗鏁版嵁锛?/p>
- 琛ㄥ崟瀹屾垚鐜囨彁鍗?1%
- 瑙嗛殰鐢ㄦ埛鎶曡瘔涓嬮檷68%
- 瀹㈡湇鍜ㄨ閲忓噺灏?5%
鍏抽敭浠g爜鐗囨锛?/p>
javascript澶嶅埗// 缁煎悎杩愮敤澶氱鎶€鏈?/span> const handleSubmit = () => { if(!isValid) { GetFocusJS .speak('鎵嬫満鍙锋牸寮忛敊璇?) // 璇煶鎻愮ず .vibrate(200) // 鎵嬫満鎸姩 .moveTo('#phone'); } };
馃挕 鐙娲炲療锛氳繖浜涚粏鑺傚€肩櫨涓?/h3>
- 鈥?strong>鈥嬪埆鍦ㄦ敮浠樺満鏅帺鑷姩鑱氱劍鈥?/strong>鈥嬶紙鐢ㄦ埛浼氫互涓鸿榛戝鍔寔锛?/li>
- 鈥?strong>鈥嬭€佸勾浜洪€傞厤鈥?/strong>鈥嬭姣擶CAG鏍囧噯鏇翠弗鏍硷紙鎶婂瓧浣撴斁澶?.5鍊嶏級
- 鈥?strong>鈥嬮敊璇彁绀鸿壊褰╁姣斿害鈥?/strong>鈥嬭嚦灏戣揪鍒?.5:1锛堝弬鑰冪綉椤?0鐨勫北涓滃湴鏍囷級
- 鈥?strong>鈥嬬Щ鍔ㄧ铏氭嫙閿洏鈥?/strong>鈥嬩細閬尅1/3灞忓箷锛岃寰楃敤
visualViewport
API璋冩暣甯冨眬
visualViewport
API璋冩暣甯冨眬鏈€鍚庢墧涓帇鐐告暟鎹細鏍规嵁鑵捐浜戠ぞ鍖鸿皟鐮旓紙缃戦〉2銆?锛夛紝鈥?strong>鈥嬫纭疄鏂界劍鐐圭鐞嗙殑琛ㄥ崟锛岀敤鎴风暀瀛樼巼姣斿叾浠栬〃鍗曢珮2.3鍊嶁€?/strong>鈥嬨€傝繖涓嶆瘮鎴愬ぉ鐞㈢(鎬庝箞璁╃敤鎴峰鐐瑰嚮骞垮憡棣欙紵
本文由嘻道妙招独家原创,未经允许,严禁转载