我有一个包含多个搜索(文本)字段的表单。当文本输入其中一个字段时,我想禁用其他字段。相反,如果从活动文本字段中删除所有文本,则应重新启用其他字段。
基本想法是这样的(我认为):
$(document).ready(function() {
$("input[@type=text]").keypress(function(e) {
if(current textbox has text in it)
{
//disable all textboxes that aren't this one
}
else
{
//enable all textboxes
}
});
});
我不清楚找到/使用“不是这一个的所有文本框”的最简单方法是什么。
答案 0 :(得分:7)
我认为“所有不是这个文本框”的最佳方法是使用not
过滤器,如:
$(document).ready(function() {
$(":text").keyup(function(e) {
if($(this).val() != '') {
$(":text").not(this).attr('disabled','disabled');
} else {
$(":text").removeAttr('disabled');
}
});
});
@
。 :text
是您想要的简写,如果您坚持以这种方式选择它们。keyup
事件而不是keypress
。答案 1 :(得分:2)
我首先禁用它们,然后由于要执行的代码由控件的事件触发,您可以使用this关键字引用具有焦点的控件并重新启用它。
$("input[@type=text]").attr("disabled", true);
$(this).attr("disabled", false);
答案 2 :(得分:1)
我会将登录信息附加到焦点/模糊事件:
$(function() {
$(':text').focus(function() {
$(':text').not(this).attr('disabled','disabled');
}).blur(function {
if (this.value.length == 0) {
$(':text').removeAttr('disabled');
}
});
})
@attr选择器在1.2中已弃用,并已从1.3中完全删除。在这种情况下,您将要使用:text
答案 3 :(得分:0)
使用not选择器