如何在JQuery的文本框改变时禁用下一个文本区域
How to disable very next textarea on change of textbox in JQuery?
在我的代码中有多个文本框和文本区
我在所有的文本框中都保留了kid class。
我期望的是当用户输入任何值时,VERY NEXT TEXTAREA应该被禁用。下面是结构
<div>
<div>
<input type="text" class="kid" value="" name="kid" id="kid" />
</div>
<div>
<div></div>
<div>
<textarea cols="30" rows="2" name="comment" id="comment"> </textarea>
</div>
</div>
</div>
不工作的JQuery代码是:
var a = {
init: function () {
$(".kid").on("change keyup paste", function () {
if ($(this).val() != "") {
$(this).next().attr("disabled", true);
} else {
$(this).next().attr("disabled", false);
}
});
}
};
$(document).ready(a.init());
小提琴:https://jsfiddle.net/0f6vp938/
var a = {
init: function () {
$(".kid").on("change keyup input", function () {
if ($(this).val() != "") {
$(this).parent().next().find('textarea').prop("disabled", true);
} else {
$(this).parent().next().find('textarea').prop("disabled", false);
}
});
}
};
$(document).ready(a.init());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div>
<div>
<input type="text" class="kid" value="" name="kid" id="kid" />
</div>
<div>
<div></div>
<div>
<textarea cols="30" rows="2" name="comment" id="comment"></textarea>
</div>
</div>
</div>
用prop()
代替attr()
:
var a = {
init: function () {
$(".kid").on("change keyup paste", function () {
if ($(this).val() != "") {
$("#comment").prop("disabled", true);
} else {
$("#comment").prop("disabled", false);
}
});
}
};
$(document).ready(a.init());
小提琴:https://jsfiddle.net/0f6vp938/5/
也许是这样的?
var a = {
init: function () {
$(".kid").on("change keyup paste", function () {
var $inp = $(this);
var v = $inp.val().trim();
if (v != "") {
$inp.parent('div').parent('div').find('textarea').prop('disabled', 'disabled');
} else {
$inp.parent('div').parent('div').find('textarea').prop('disabled', false);
}
});
}
};
$(document).ready(a.init());
在您提供的代码中,TEXTAREA并没有真正靠近INPUT标签。
把它们放在一起,你就完了。
<div>
<div>
<input type="text" class="kid" value="" name="kid" id="kid" />
<textarea cols="30" rows="2" name="comment" id="comment"></textarea>
</div>
</div>
这是更新后的小提琴
如果你不想让它们像这样放在一起,那么你应该使用你想要禁用的TEXTAREA的ID或CLASS
HTML:<div>
<div>
<input type="text" class="kid" value="" name="kid" id="kid" />
</div>
<div>
<div></div>
<div>
<textarea cols="30" rows="2" name="comment" id="comment"></textarea>
</div>
</div>
</div>
jQuery: var a = {
init: function () {
$(".kid").on("change keyup paste", function () {
if ($(this).val() != "") {
$('#comment').attr("disabled", true);
} else {
$('#comment').attr("disabled", false);
}
});
}
};
$(document).ready(a.init());
相关文章:
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- 在文本区域中使用jQuery.text()保持换行符
- ng在下拉列表和文本区域提交
- 将文本插入光标所在的文本区域
- 离开页面导航后保留文本区域内容
- Javascript-在文本区域中断,但不在段落中中断
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 测试文本区域中的特定文本格式
- 文本编辑后,append函数不适用于文本区域
- 如何在ReactJs中链接下拉列表和文本区域
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- 使用JSON文件中的变量(字符串)填充文本区域
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- 延迟高亮显示文本区域中的文本
- 将字母添加到文本区域的末尾
- TinyMCE在新添加的文本区域