当浏览器文本输入通过鼠标动作改变时做出反应
React when Browser Text Input Changed through Mouse Action
我有一个文本输入框和一个复选框。当且仅当文本字段中有输入时,必须禁用复选框。我有一个解决方案,适用于大多数情况:
HTML:<input type="text" id="search" />
<input type="checkbox" id="cb" />
<label for="cb">Enabled only if no search term</label>
jQuery: $('#search').keyup(function (e) {
var enable = $(this).val() == 0;
if (enable) {
$('#cb').removeAttr('disabled');
} else {
$('#cb').attr('disabled', 'disabled');
}
});
在jsFiddle上观看。
当使用键盘输入或删除文本,以及使用键盘粘贴文本时,此操作有效。
如果用户使用右击上下文菜单粘贴文本,或者如果用户按下IE添加到输入字段的小"X"以允许清除输入字段,则失败。
我如何改进代码,使其在这些情况下也能工作?等待文本框失去焦点将提供较差的用户体验。
实时验证jQuery插件解决了这个问题。但是,它目前似乎不能用于委托事件。
实现这一点需要将事件绑定到keyup事件,如果您想检测剪切和粘贴时的文本更改,还需要绑定几个其他事件。即使你是JavaScript高手,一遍又一遍地写这个逻辑也是很乏味的。聪明点,使用ZURB文本更改事件插件。
您可以使用jquery的更改方法:
http://jsfiddle.net/WDMCX/1/$('#search').change(function() {
if( $(this).val() === '' ){
$('#cb').attr('disabled', 'disabled');
} else {
$('#cb').removeAttr('disabled');
}
});
相关文章:
- 用于根据用户改变文本区域的字体颜色的JavaScript'的选择
- Jquery改变文本框边框,但只有一次
- jQuery在选择选项时不改变文本
- JavaScript代码通过点击不同的图像来改变文本区域的值
- 多个显示/隐藏改变文本
- 改变文本拖动根据一些条件- Extjs 4
- 如何在元素悬停时动态改变文本
- 旧的javascript程序来改变文本和背景颜色的单元格
- 如何改变文本时倒数零
- 使用指令式Angular JS动态改变文本的颜色
- 改变文本区域onclick的值将插入符号置于一个奇怪的位置,但仅在IE中
- 如何在没有第三方JS库的情况下改变文本区域滚动条的颜色
- 如何使用Angularjs指令根据动态值改变文本颜色
- 随着HTML5范围滑动条的移动,不断改变文本框的值
- 改变文本的颜色在定时间隔
- 动态crm:用javascript改变文本方向
- 我的javascript只工作,它's不改变文本
- 谷歌可视化饼图-改变文本坐标
- 如何改变文本颜色的背景变化
- 我有一个按钮,可以在点击时改变文本,但不会变回来