【发布时间】:2013-01-02 17:14:05
【问题描述】:
我有一个禁用的元素,只有在将值输入到它的前一个输入后才启用它,问题是change 在输入失去焦点之前触发并且焦点移动到下一个未禁用的元素,所以删除@ 987654324@属性那就不行了。
HTML:
Fill this before you continue: <input id="a" />
Fill this after the previous input: <input id="b" disabled="disabled" />
jQuery:
$('#a').change(function(){
if (this.value === "")
$('#b').attr('disabled', 'disabled');
else
$('#b').removeAttr('disabled');
});
我设法通过从disabled 更改为readonly 来克服这个问题,但是它是只读的,而不是我喜欢的禁用,是否有好的和强大的(鼠标证明)方法来实现它并使用readonly?
需要考虑的事项:
- 订阅多个事件似乎并不正确。
- 用户可以在不使用键盘的情况下将文本粘贴到第一个输入。
【问题讨论】:
-
change在输入失去焦点之前不会触发 AFAIK。你用的是什么浏览器? -
@Asad, "change- 当控件失去输入焦点时发生更改事件,并且在获得焦点后其值已被修改。此事件适用于INPUT、SELECT 和 TEXTAREA. 元素。" Spec
-
仅供建议:如果您正在构建一个接收电子邮件或密码而不是原始文本的表单,则在成功验证第一个输入时启用另一个输入!你用的方法没有用!人们只会添加空格并解锁其他输入;)
-
是的,它发生在输入失去焦点时,而不是之前。
-
@AspiringAqib,我认为使用 keyup 粘贴会起作用,而不是
change。
标签: javascript jquery focus readonly disabled-input