我有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函数。有什么想法吗?
答案 0 :(得分:2)
您可以在文本框中使用事件.change()。所以每次文本框都有变化。您可以调用函数来启用或禁用其他文本框。
$("#IdTextbox").change(function () {
yourFunction();
});
要检查文本框是否包含某些数据:
if ($('#txt').val() != "") {
doSomething();
}
答案 1 :(得分:1)
是的,您可以尝试keyup
或keypress
,这会在用户开始输入文字时触发。
答案 2 :(得分:1)
让两者都启用,不要使用设置间隔。
使用文本框中的参数onChange
或keyup
或keypress
来调用验证包装盒上是否有新内容的功能,然后执行启用/禁用。
答案 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);
}
});
你应该写一个函数让它干涸。