Javascript只允许一个文本框包含值

时间:2012-02-14 15:59:54

标签: javascript jquery textbox

我有2个可选的文本框,只有1个文本框可以包含数据。当需要输入其他内容时,我需要它来动态启用/禁用其他文本框。默认情况下,它们都应该被启用,但是当在另一个中输入某些内容时,应该禁用它们。我有这个使用下面的代码,但现在它似乎没有这样做。它基本上每隔半秒检查一次,看看是否输入了值。

setInterval(function(){
if ($("input[name=audioUri]").val().length != 0) {
    $("input[name=videoUri]").attr("disabled", "disabled");
    $("input[name=audioUri]").attr("disabled", "");
} else if ($("input[name=videoUri]").val().length != 0) {
    $("input[name=audioUri]").attr("disabled", "disabled");
    $("input[name=videoUri]").attr("disabled", "");
} else {
    $("input[name=videoUri]").attr("disabled", "");
    $("input[name=audioUri]").attr("disabled", "");     
}} , 500);

它检查页面加载时文本框中是否已有值,并确定从那里开始做什么,但是当我第一次加载页面时,两个框都被禁用。这几乎就像他们认为文本框中已经存在某些东西。当我检查框的值时,它是空字符串“”,也许我应该检查.val()!=“”?

我认为可能有更好的方法来处理它而不需要setInterval函数。有什么想法吗?

更新 http://jsfiddle.net/7mKzy/1/

4 个答案:

答案 0 :(得分:2)

您可以在文本框中使用事件.change()。所以每次文本框都有变化。您可以调用函数来启用或禁用其他文本框。

$("#IdTextbox").change(function () {
        yourFunction();
    });

要检查文本框是否包含某些数据:

if ($('#txt').val() != "") {
           doSomething();
}

答案 1 :(得分:1)

是的,您可以尝试keyupkeypress,这会在用户开始输入文字时触发。

答案 2 :(得分:1)

让两者都启用,不要使用设置间隔。 使用文本框中的参数onChangekeyupkeypress来调用验证包装盒上是否有新内容的功能,然后执行启用/禁用。

答案 3 :(得分:1)

keydown()上执行并使用prop()

$('input[name=audioUri]').keydown(function(){
    if (!$(this).val()) {  
        $('input[name=videoUri]').prop("disabled", true); 
    }
});

要检查负载,只需在DOM准备就绪:

$(function(){
    if (!$('input[name=audioUri]').val()) {  
        $('input[name=videoUri]').prop("disabled", true); 
    }
});

你应该写一个函数让它干涸。