如何在文本框出现在屏幕上时设置焦点
How to set focus on text box whenever it appears on the screen
我制作了一个web应用程序,它从特定的金额开始,每次捐款都会倒计时,并显示需要多少。有一段时间,我可能会有10-20个这样的倒计时,我总是在创造新的。现在,当我这样做的时候,当我点击按钮时,它会自动聚焦在文本字段上,以便于使用。但是我不能完全做到这一点。
设置倒计时的窗口使用angularjs对话框/模式显示。这意味着,当我单击a按钮时,它会在显示对话框/模态的页面上写入代码,当我提交它时,它将完全从页面中删除。
第一次当我点击按钮时,它会聚焦在文本框上,我可以键入数字并按enter键,它就提交了,现在我想创建一个新的。我点击按钮,模态出现了,但现在我必须抓住鼠标,将其移动到输入并点击它。浪费时间,而且对用户不友好。
我所要求的是,当我每次点击按钮时都使用模态时,有一种方法可以让它集中在文本字段上。
这是窗口:
<form name="formCountdown" novalidate class="css-form">
<div modal="showCountdownModal" close="showCountdownModal = false" options="opts" ng-cloak>
<div class="modal-header">
<h4>Enter Countdown Amount</h4>
</div>
<div class="modal-body">
<input id="focusbox" type="number" min="1" autofocus required ng-model="countDownAmount" name="countDownAmount" ui-keypress="{13:'setCountdown()'}" select-on-focus />
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary cancel" ng-disabled="formCountdown.$invalid" ng-click="setCountdown()">Set</button>
</div>
</div>
</form>
我试过使用自动对焦,加载页面后第一次按下按钮时效果很好。但第二个和第三个则不然。我也尝试过使用这个jquery代码,但没有成功:
<script>
$("#focusbtn").click(function() {
$("#focusbox").focus();
});
</script>
现在我完全迷失了方向,如果有人能在这里帮助我,我会非常高兴。
编辑:忘记放入超时,以确保浏览器准备就绪!
在setCountDown()函数中添加以下行:
$timeout(function (){
document.querySelector('#focusbox').focus();
},0)
您需要在控制器中注入$timeout这可能会奏效!然而,这是可行的,但是dom操作应该在指令中完成!
我把你发布的代码和脚本一起复制了,它运行得很好。我不确定我是否理解这个问题,但自动对焦在我看来效果很好。页面加载或刷新后,甚至单击按钮后,都会出现自动对焦。当然,如果触发了输入文本之外的点击,自动对焦将被取消。
此外,我认为自动对焦是HTML5的一个特性。您可能想在HTML中包含,或者这只是浏览器兼容性问题。您可以在上测试或检查浏览器是否支持自动对焦http://html5test.com/.
希望这能有所帮助。
编辑:
在你的脚本上试试这个。
$(document).ready(function() {
$(".modalName").on('shown', function() {
$(this).find("[autofocus]:first").focus();
});
});
- Div 设置为视口高度,即使调整屏幕大小也是如此
- 根据移动设备屏幕大小动态设置HighCharts marginTop
- 尝试根据屏幕大小预先设置文本
- 根据当前屏幕窗口大小设置模式窗口的最大高度
- 在余烬中将屏幕阅读器的焦点设置在模式警报上
- 如何设置正文相对于屏幕大小的字体大小
- 如何将变量设置为文本输入,然后使其显示在屏幕上
- 根据屏幕/设备宽度设置谷歌地图API V3缩放级别
- 如何使用JS将当前歌曲的信息设置为iPhone锁定屏幕
- 如何滚动以在屏幕底部设置 DIV 的底部(监视器)
- 在指定屏幕大小时设置 JQuery 页面重新加载
- 在Three.js中向相机推送Object3D-这很有效,需要设置新的屏幕位置
- 设置指向<李>基于屏幕上的位置
- 如何将光标设置为离开屏幕
- 打开Chrome或Firefox,不带标签和其他菜单项,并设置屏幕位置和大小
- 如何在文本框出现在屏幕上时设置焦点
- 当显示元素设置为无时,如何避免屏幕自动滚动
- 在屏幕的左边和右边设置导航箭头
- 如何设置屏幕中央时,崩溃关闭
- 如何在javascript中按%(百分比)设置屏幕高度和宽度