JavaScript实现多选框输入
P粉502608799
P粉502608799 2023-09-06 09:26:47
[HTML讨论组]

当我点击选择时,会弹出一个框,我们可以选择多个选项,包括父级和子级。当选项被选中后,立即在输入框中显示ID号码。当我们点击确定时,框将被隐藏。我希望每个框都在输入框中单独完成。这是我的HTML:

<p>当我点击选择时,会弹出一个框,我们可以选择多个选项,包括父级和子级。当选项被选中后,立即在输入框中显示ID号码。当我们点击确定时,框将被隐藏。我希望每个框都在输入框中单独完成。这是我的HTML:

<button class="btn-select">选择一个...</button>
<div class="box" style="display:none">
<input type="checkbox" class="checkbox" value="1">复选框1
<input type="checkbox" class="checkbox" value="2">复选框2
<input type="text" class="input input-1" value="">
<button class="btn-ok">确定</button>
</div>
<button class="btn-select">选择两个(父级/子级)...</button>
<div class="box" style="display:none">
<ul class="father">
<li>
<input type="checkbox" class="checkbox" value="1">部分1
<ul class="children">
<li><input type="checkbox" class="checkbox" value="5">复选框5</li>
</ul></li>
<li>
<input type="checkbox" class="checkbox" value="2">部分2
<ul class="children">
<li><input type="checkbox" class="checkbox" value="7">复选框7</li>
<li><input type="checkbox" class="checkbox" value="8">复选框8</li>                        
</ul></li></ul>
<input type="text" class="input input-2" value="">
<button class="btn-ok">确定</button>
</div>
.
...选择三个...
..选择四个..
..
.

这是我的JS(子级和父级):

handleChildren = function() {
    var $checkbox = $(this);
    var $checkboxChildren = $checkbox.parent();
    $checkboxChildren.each(function() {
      if ($checkbox.is(":checked")) {
        $(this).prop("checked", "checked");
      } else {
        $(this).removeProp("checked");
      }
    });
};
handleParents = function(current) {
    var $parent = $(current).closest(".children").closest("li").find("> input[type=checkbox]");
    if ($parent.parent().find(".children input[type=checkbox]:checked").length > 0) {
      $parent.prop("checked", "checked");
    } else {
      $parent.removeProp("checked");
    }
    handleParents($parent);
}
$("ul.father").find("input[type=checkbox]").each(function() {
    $(input).on("click", handleChildren);
    $(input).on("click", function() {
        handleParents(this);
    });
});

这是我的JS:

$(document).on('click', '.btn-ok', function(){
    $('.box').hide()
});
$(document).on('click', '.btn-select', function(){
    $('.box').hide()
    $(this).next().show();
});
$(".checkbox").change(function() {
    var text = "";
    $(".checkbox:checked").each(function() {
        text += $(this).val() + ",";
    });
    text = text.substring(0, text.length - 1);
    $(this).next().val(text);
});

现在控制台显示了一个错误:

Uncaught InternalError: too much recursion
    closest file:///var/www/html/jquey.js:1

P粉502608799
P粉502608799

全部回复(1)
P粉141035089

您的handleParents无条件地调用自身。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号