2012-03-02 104 views
1

我希望能够在用户开始在文本字段中输入时禁用页面上的选择菜单。这是因为文本字段是输入数据的另一种方式,禁用下拉菜单将有助于使其更清晰。基于文本字段值动态禁用选择菜单

我知道我可以使用这样的:

<select name="specialty" id="specialty" disabled="disabled"> 

永久禁用的选择,但有动态分配该属性的方式,当文本字段的值更改?我知道没有css属性可以完成文本输入和textareas。

的东西,我发现是内选择禁用选项一个jQuery解决方案:

Disable select options based on value *through the HTML only!*

我试图修改此禁用整个选择,但没有成功(文本字段的id为testinput):

<script type="text/javascript"> 

$("#testinput").change(function(){ 
    $("#specialty").attr("disabled","disabled"); 
} 
); 

</script> 

这是一个简化版本(真正的功能应该检查testinput字符串的长度,决定是否启用或禁用基于这样的选择),但如果有人能帮助我得到这个工作,然后修改它很容易。

回答

0

对我来说,它的工作原理,如果事件处理程序被宣布后的DOM已准备就绪:

<script type="text/javascript"> 

$(document).ready(function() { 
$("#testinput").change(function(){ 
    $("#specialty").attr("disabled","disabled"); 
} 
); 
}); 

</script> 

然而,这样选择框只会在输入框失去焦点后才会被禁用。您可能想使用其中一个按键事件。

+0

OK现在有事情真的很混乱。我从页面中删除了所有的Javascript/JQuery,包括事件调用,现在选择框一直处于禁用状态! – jovan 2012-03-02 17:29:58

+0

@robert:你确定你已经从HTML中删除了'disabled =“disabled”'? – 2012-03-02 17:30:47

+0

这从来没有在HTML中,我只是再次检查,它不在那里。这真是令人困惑。在页面上绝对没有调用Javascript,但select被禁用。 – jovan 2012-03-02 17:32:03

0

试试这个,而不是jQuery的

document.getElementById('testinput').disabled = true; 
0

尝试

$("#specialty").attr("disabled", true); 
0

您的代码应该按照书面形式工作(例如参见http://jsfiddle.net/3QXnq/)。但有一点要记住 - 文本输入的onchange事件只有在焦点离开文本框时才会被触发。换句话说,直到他们继续前进,下拉菜单才会被禁用。

如果要在开始键入时立即禁用它,则需要使用其他事件,例如onfocus或onkeydown。

0

如果使用jQuery版本> = 1.6,使用道具()方法为 '已禁用'

http://api.jquery.com/prop/

不清楚自己想要什么测试,但这里的基本

$("#testinput").change(function(){        
    var value=this.value; 
    var test= value=='' || value.length===x; 
    $("#specialty").prop("disabled",test);// will enable/disable based on test 

})