标签技术,怎么在最后写入数据库的时候,知道用户选择了哪些标签?

发布于 2022-09-02 13:00:31 字数 4170 浏览 54 评论 0

我想在用户每次点击tag的时候,把值记录进一个隐藏域,然后删除这个tag的时候,再replace掉这个tag,最后写入数据库。
我面临的问题是,怎么在用户点击x时移除tag的同时,移除已经在隐藏域里的tag

移除标签的时候,怎么获取到,移除的是哪个标签呢?

//==================tags start
            function tagdiv() {
                $(".tag_div").click(function(e) {
                    var e = e || window.event;
                    var target = e.target || e.srcElement;
                    if ($(target).attr("data-role") == "remove") {
                        //点击x时移除标签
                        //added by yang 2016-04-10 start
                        var obj = $(target).parent().html();
                        alert(obj);                
                        //added by yang 2016-04-10 end
                        $(target).parent().remove();
                    } else {
                        //div点击时
                        $(this).find("input").eq(0).focus();
                    }
                });
            }
            $(function() {
                //分类切换
                $(".nav-tabs").click(function(e) {
                    var e = e || window.event;
                    var target = e.target || e.srcElement;
                    if (target.nodeName.toLowerCase() == "span") {
                        if (!$(target).parent().hasClass("crently")) {
                            $(".nav-tabs li").removeClass("crently");
                            $(target).parent().addClass("crently");
                            $(".nav_content p").eq($(target).parent().index()).show().siblings().hide();
                            //console.log();
                        }
                    }
                });
                //分类详细点击
                $(".nav_content").click(function(e) {
                    var e = e || window.event;
                    var target = e.target || e.srcElement;
                    if (target.nodeName.toLowerCase() == "a") {
                        //判断字符是否在已选内容 
                        //txt为当前点击的标签,includetxt为选中的标签
                        var txt = $(target).html();
                        //yang added on 2016-04-10 start
                        alert(txt);
                        //yang added on 2016-04-10 end
                        var includetxt = $(".tag_div").html();
                        if (includetxt.indexOf(txt) == -1 && $(".tag_div span").length < 5) {
                            $('<span> ' + $(target).html() + ' <i data-role="remove"></i></span>').insertBefore(".tag_input");                                
                            $(".tag_div").unbind();
                            tagdiv();
                        }
                    }
                });
                //隐藏 列表分类
                $("body").click(function(e) {
                    var e = e || window.event;
                    var target = e.target || e.srcElement;
                    if ($(target).parents(".tag_list").length > 0 || $(target).parents(".tag_div").length > 0 || $(target).hasClass("tag_list") || $(target).hasClass("tag_div")) {
                        $(".tag_list").show();
                        //console.log("显示");
                    } else {
                        console.log($(".tag_list").attr("display") != "none");
                        if ($(".tag_list").attr("display") != "none")
                            $(".tag_list").hide();
                        //console.log("隐藏");            
                    }
                })
            });
            //==================tags end

![图片描述][2]

图片描述

最后通过document.setweb.submit()提交到ThinkPHP的时候,怎么把这个tag_selected数组提交上去?
提交到后台

要提交的表单的名字,通过document.setweb.submit()提交该表单。

表单名字

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浴红衣 2022-09-09 13:00:31

说一下思路:上面你不是和 @papersnake 讨论过了嘛,submit时获取相关信息,不需要隐藏域。
不论你添加了多少标签还是中途删除了哪些标签,都不干涉你最后的获取,以SF为例:
图片描述
html结构如下:
图片描述
标签区域一般来说都是一个内容块,div也好ul也好,剩下的就是把里面每个标签的值取出来,放在数组里面或者其他数据格式,传给后端就行了。


<div class="tag_div">
    <span class="tag-item">" javascript "<i data-role="remove"></i></span>
    <span class="tag-item">" java "<i data-role="remove"></i></span>
    <span class="tag-item">" javac "<i data-role="remove"></i></span>
    <input />
    <ul></ul>
</div>
var tag_selected = [];
$(".tag-item").each(function(){
    var tag = $(this).contents().filter(function(){return this.nodeType === 3;}).text().slice(2,-2);
    tag_selected.push(tag);
});
console.log(tag_selected);//["javascript", "java", "javac"]
策马西风 2022-09-09 13:00:31

如果换我来处理 这样的问题,我想如果在onsubmit的时候 获取已选标签 处理会简单的多,

莳間冲淡了誓言ζ 2022-09-09 13:00:31

就是说,怎么在最终提交页面之前,获取到有哪些tag被选择了。。。

有没有最快,最直接的方法,能获取到哪些tag被选择了?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文