繁体   English   中英

如何禁用JQuery中的文本框更改后的下一个textarea?

[英]How to disable very next textarea on change of textbox in JQuery?

我的代码中有多个Textbox和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()); 

如这个小提琴所示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM