随笔 - 51,  文章 - 0,  评论 - 6,  阅读 - 32766

做一个标签,可以添加,删除

复制代码
<%@tag import="java.text.DecimalFormat"%>
<%@tag import="com.alibaba.fastjson.JSONArray"%>
<%@tag import="com.yinhai.sysframework.util.json.JSonFactory"%>
<%@tag import="com.alibaba.fastjson.JSONObject"%>
<%@tag import="com.yinhai.sysframework.util.ValidateUtil"%>


<%@tag pageEncoding="UTF-8" body-content="scriptless"%>
<%@attribute name="json" required="false" type="java.lang.String" description='如[{"id":"button1","name":"提交","click":"fnClick()"}]'%>
<html>
<head>
</head>
<body>
<%if(!ValidateUtil.isEmpty(json)){ %>
<% 
String span="";
JSONArray array = JSonFactory.json2bean(json, JSONArray.class);
//out.print("<br>"+key+" "+value+" "+desc+"");
for(int i =0;i<array.size();i++){
JSONObject obj = (JSONObject) array.get(i);
span=span+"<span id=span_"+obj.get("id")+" class='tag' style='border: 1px solid #a5d24a; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #cde69c; color: #638421; margin-right: 5px; margin-bottom:5px;font-family: helvetica; font-size:13px;'><span > "+obj.get("desc")+":"+obj.get("value")+" &nbsp;&nbsp;</span><a title='Removing tag' style='font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px;' href='javascript:void(0)' onclick='del(this.parentNode)'>x</a></span>";
}
out.print("<div id='tag' style='background: white;width: auto; min-height: 35px; height: 35px;' value="+json+">"+span+"</div><hr color='black' width='100%' />");
%>
<%} %>
</body>
<script>
function del(obj){//onclick='del(this.parentNode)'
obj.parentNode.removeChild(obj);
var tag = $("#tag").attr("value");
var jsObject = JSON.parse(tag);
var newArr = new Array();
for(var i=0;i< jsObject.length;i++){
var j=jsObject[i];
if(j.id!=obj.id){
newArr.push(j);
}
}
var str=JSON.stringify(newArr);
$("#tag").attr('value',str);
};

function addTagByJson(json){
 //varjson=[{'id':'3','desc':'测试3','value':'3'},{'id':'4','desc':'测试4','value':'4'}];
//判断是字符串还是json
var jsonObject =json; //JSON.parse(json);
var tag = $("#tag").attr("value");
var jsObject = JSON.parse(tag);
var idObject= new Array();
var newArr = new Array();
var spanStr ="";
for(var i=0;i< jsObject.length;i++){
var j=jsObject[i];
newArr.push(j);
idObject.push(j.id);
}
for(var m=0;m< jsonObject.length;m++){
if(!array_contain(idObject,jsonObject[m].id)){
newArr.push(jsonObject[m]);
spanStr=spanStr+"<span id=span_"+jsonObject[m].id+" class='tag' style='border: 1px solid #a5d24a; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #cde69c; color: #638421; margin-right: 5px; margin-bottom:5px;font-family: helvetica; font-size:13px;'><span > "+jsonObject[m].desc +":"+jsonObject[m].value+" &nbsp;&nbsp;</span><a title='Removing tag' style='font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px;' href='javascript:void(0)' onclick='del(this.parentNode)'>x</a></span>"
}
}
var str=JSON.stringify(newArr);
$("#tag").attr('value',str);
console.info(spanStr);
$("#tag").append(spanStr);
}

function removeTagById(id){
//根据id查找该标签并删除
$("#span_"+id).remove();
var tag = $("#tag").attr("value");
var jsObject = JSON.parse(tag);
var newArr = new Array();
for(var i=0;i< jsObject.length;i++){
var j=jsObject[i];
if(j.id!=id){
newArr.push(j);
}
}
var str=JSON.stringify(newArr);
$("#tag").attr('value',str);
}

function array_contain(array, obj){
 for (var i = 0; i < array.length; i++){
 if (array[i] == obj)//如果要求数据类型也一致,这里可使用恒等号===
return true;
 }
 return false;
}
</script>
</html>
View Code
复制代码

效果:

页面调用 

<%@ taglib prefix="ta" tagdir="/WEB-INF/tags/tatags" %>
<ta:tag json='[{"id":"1","desc":"测试1","value":"1"},{"id":"2","desc":"测试2","value":"2"}]'></ta:tag>

 

posted on   黑狱  阅读(322)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示