我正在尝试在 firefox 上使用带有html输入(type = number)元素的ng-blur。
我发现的问题是,当使用输入数字的向上和向下箭头时,使用firefox不会触发模糊和焦点事件,而使用chrome工作正常。
您可以在http://jsfiddle.net/chonw54e/
中重现该问题<div ng-app ng-init="focus=false;blur=false;active=false">
<input type="number" ng-class="{ myFocus: focus, myBlur: blur }" ng-focus="focus=true;blur=false;" ng-blur="blur=true;focus=false;">
<p>focus: {{focus}}</p>
<p>blur: {{blur}} </p>
</div>
只需加载页面(同时使用firefox和chrome),然后点击html输入数字的上/下箭头
我做错了什么?
感谢您的帮助!
编辑: 2015年12月12日
@ Arg0n的解决方案解决了这个问题。但是,它看起来像firefox或angularjs的问题。
我刚刚在angular github上创建了一个问题here
这不是一个角度问题。这是因为firefox的事件行为在点击输入内部的箭头时不会集中输入(在我看来这是一个错误)。
编辑:2015年12月14日
在bugzilla中创建的Firefox问题:https://bugzilla.mozilla.org/show_bug.cgi?id=1232233
答案 0 :(得分:5)
您可以使用jQuery解决此问题,请参阅this小提琴:
的JavaScript
$(function(){
$("input[type='number']").on("click", function(){
$(this).focus();
});
});
如果没有jQuery,请参阅this:
的JavaScript
document.onreadystatechange = function() {
if (document.readyState == "complete") {
var inputs = document.querySelectorAll('[type="number"]');
for (var i = 0; i < inputs.length; i++) {
inputs[i].onclick = function() {
this.focus();
}
}
}
}
这会强制浏览器在点击时关注input
。 (Input
type
设为number
)。
答案 1 :(得分:0)
如果您有一个字段或使用Angularjs的onclick="this.focus();"
,那么简单的ng-repeat
会既好又简单。