如何使用AngularJS将输入框设置为清除焦点上的默认值?
How can I set an input box to clear its default value on focus using AngularJS
这是一个相当标准的UI实践,所以我认为我可以很快找到一个解决方案,但我没有运气。
这是我通常为这个功能编写的jQuery代码:(function($){
$.fn.focusClear = function(text) {
text = text || this[0].defaultValue;
this.focus(function() {
if($(this).val() == text) $(this).val('');
}).blur(function() {
if( $(this).val() == '') $(this).val(text);
});
return this;
};
})(jQuery);
我怎样才能用Angular实现同样的效果?
不确定我是否完全理解您的意图功能,但您可能能够使用占位符这样的东西?
我在angular中也需要这个,于是我想到了这个:
app.directive('input', function() {
return {
restrict: 'E',
link: function(scope, element, attrs) {
var defaultVal = element.val();
element.bind("focus", function(e) {
if(element.val() == defaultVal) element.val('');
})
element.bind("blur", function(e) {
if( element.val() == '') element.val(defaultVal);
});
}
}
});
Angularjs没有内置的焦点事件监听器,但你可以自己编写。
但首先,请注意所有现代浏览器都支持输入字段的placeholder
属性,它可以做你想做的事情。
<input type="text" placeholder="username" name="username">
占位符可能是您需要的答案,但万一您需要对元素进行更多的控制,我建议您查看指令:
- 文档:http://docs.angularjs.org/guide/directive
- Youtube: http://www.youtube.com/watch?v=WqmeI5fZcho
本质上,指令赋予你赋予元素行为的能力。而且,如果你想做任何类型的DOM操作,建议的方法是使用Angular的这个特性(永远不要在控制器中做DOM操作)。使用指令中的link
函数,您可以轻松地获取元素,其属性和操作元素的作用域。
希望对你有帮助。
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 单击时将焦点更改为元素
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 单击jquery清除输入值
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 在IE9中的输入字段中输入焦点最近按钮
- Javascript游戏输入失去焦点
- ExtJS网格单元格编辑器,防止焦点松动问题
- 如何在Microsoft VirtualEarth 6.3中使用纯javascript清除整个形状层
- 检查元素是如何获得焦点的
- 清除以前的$_GET值或不获取仅隐藏字段的值
- 如何在javascript中检测字段是否在焦点上并清除它旁边的错误
- 如何第一次清除焦点上的输入
- 搜索字段,清除焦点上的默认文本-FF 3.6
- 如何使用AngularJS将输入框设置为清除焦点上的默认值?
- Javascript:当输入失去焦点时清除html输入
- JavaScript清除焦点上的SharePoint文本筛选框
- 清除失去焦点的字段,除非该字段是从下拉菜单中填充的
- Firefox:清除文本框值时失去焦点
- 如何触发一个事件,当用户清除文本字段和焦点的文本字段使用Jquery