实现添加相关资源的弹出ifreame 并实现多选框
项目中:语音导览添加相关展品 字段:relactiveExhibitItem 长度 varchar2000
<div class="control-group">
<label class="control-label">相关展品:</label>
<div class="controls">
<input type="button" value="选择" id="itemIds" onclick="selectExhibitItem(this.id)" />
<div id="exhibitItemDiv" class="box" style="width:100%;font-size:14px;" >
<form:input type="hidden" id="itemIds_input" path="relactiveexhibititem" />
//由于实际字段值为:["90c720bc42b441328aae901a1f140bae","cafeab8fc5cd492698e9a5cbf39ebc87"],所以隐藏不显示 <form:input type="hidden" id="itemIds_name" path="relactiveexhibititemName" />
<ol id="itemIds_ol"></ol>
<script type="text/javascript">
// 相关作品的id集合
var itemIdList = ${hmlwxGuideVoices.relactiveexhibititem};
//
var itemNameList = '${hmlwxGuideVoices.relactiveexhibititemName}'.split(",");
if(itemIdList && itemIdList.length>0){
//为了动态的追加显示label
for(var i=0;i<itemIdList.length;i++){
var id=itemIdList[i];
var name = itemNameList[i];
var itemli = "<li id=itemIds_"+id+"><label style=\"max-width:100px;max-height:20px;_height:100px;border:0;padding:3px;\"/>"+name+" <a href=\"javascript:\" onclick=\"removeItems('itemIds_"+id+"','"+name+"');\">×</a></li>";
var $img = $(itemli);
$("#itemIds_ol").append($img);
}
}
</script>
</div>
</div>
</div>
//选择展品
function selectExhibitItem(id){
top.$.jBox.open("iframe:${ctx}/hmlwx/hmlwxExhibitItem/selectList","选择关联展品", 1000, 500, {
buttons:{"确定":"ok","关闭":"true"},
submit:function(v, h, f){
if (v=="ok"){
//获取被选中的options 的标签
var chkItem = top.$("#jbox-iframe").contents().find('input:checkbox[name=chkItem]:checked');
var resIds="",resNames="";
var itemValue = $("#"+id+"_input").val();
alert("itemValue"+ itemValue);
var nameValue = $("#"+id+"_name").val();
alert("nameValue:"+ nameValue);
var isSelect = false;
chkItem.each(function (i) {
//alert($(this).val());
var idTemp = $(this).val();
alert("idTemp:"+ idTemp);
var nameTemp = $(this).parent().next().text();
alert("nameTemp:"+ nameTemp);
if(itemValue.indexOf(idTemp) == -1 ){
nameTemp = nameTemp.replace('\\s','').trim();
var itemli = "<li id=itemIds_"+idTemp+"><label style=\"max-width:100px;max-height:20px;_height:100px;border:0;padding:3px;\"/>"+nameTemp+" <a href=\"javascript:\" onclick=\"removeItems('itemIds_"+idTemp+"','"+nameTemp+"');\">×</a></li>";
var $img = $(itemli);
$("#itemIds_ol").append($img); if(itemValue =='[]' || itemValue=='')
itemValue = "[\""+idTemp+"\"]";
else
itemValue = itemValue.replace(",]",",\""+idTemp+"\"]").replace("]",",\""+idTemp+"\"]"); $("#"+id+"_input").val(itemValue);
if (nameValue == '' || (nameValue != '' && nameValue.indexOf(nameValue.length -1, nameValue.length)) == ",") {
nameValue += nameTemp;
} else {
nameValue += "," + nameTemp;
}
$("#"+id+"_name").val(nameValue);
resIds += "\"" + idTemp+"\",";
}
isSelect = true;
}); if(isSelect || (resIds!=null&&resIds.length>0)){
//转成json字符串
//$("#"+id+"_input").val("["+resIds.substr(0,resIds.length-1)+"]");
//$("#"+id+"_name").val(resNames.substr(0,resIds.length-1));
}else{
top.$.jBox.alert("未选择关联展品");
return false;
} }
}, loaded:function(h){
$(".jbox-content", top.document).css("overflow-y","hidden");
}
});
}
选择展品的jsp
<c:forEach items="${page.list}" var="hmlwxExhibitItem">
<tr>
<td><input type="checkbox" name="chkItem" value='${hmlwxExhibitItem.id}' class="select"/></td>
<td><a name="itemName" href="${ctx}/hmlwx/hmlwxExhibitItem/form?id=${hmlwxExhibitItem.id}&view=0">
${hmlwxExhibitItem.name}
</a></td>
<td>
${hmlwxExhibitItem.creationDate}
</td>
<td>
${hmlwxExhibitItem.spec}
</td>
<td>
${hmlwxExhibitItem.descr}
</td>
<td>
${hmlwxExhibitItem.createBy.name}
</td>
<td>
<fmt:formatDate value="${hmlwxExhibitItem.createDate}" pattern="yyyy-MM-dd"/>
</td>
</tr>
</c:forEach>
再看后台的controller中保存的方法、
@RequiresPermissions("hmlwx:hmlwxGuideVoices:view")
@RequestMapping(value = "form")
public String form(HmlwxGuideVoices hmlwxGuideVoices, Model model) {
HmlwxGuideVoicesDTO hmlwxGuideVoicesDTO = new HmlwxGuideVoicesDTO();//扩展类 新增字段为关联作品的 名称集合字段 try {
BeanUtils.copyProperties(hmlwxGuideVoicesDTO, hmlwxGuideVoices);
//对象的复制 把hmlwxGuideVoices 复制到 hmlwxGuideVoicesDTO 里
} catch (Exception e) {
throw new RuntimeException(e);
}
// 查找展品相关数据
//判断 关联作品字段中是否有值
if (StringUtils.isNotEmpty(hmlwxGuideVoices.getRelactiveexhibititem())
&& !StringUtils.equals(hmlwxGuideVoices.getRelactiveexhibititem(), "[]")) {
//若有值先转化为json对象
JSONArray json = JSONArray.fromObject(hmlwxGuideVoices.getRelactiveexhibititem());
String name = "";
if (json.size() > 0) {
//根据作品 id 找到 Name 并 拼接成一个字符转 以,分隔
for (int i = 0; i < json.size(); i++) {
HmlwxExhibitItem hmlwxExhibitItem = hmlwxExhibitItemService.get(json.getString(i));
name += hmlwxExhibitItem.getName() + ",";
}
}
if (StringUtils.isNotEmpty(name)) {
//切掉最后一个,
name = name.substring(0, name.length() - 1);
}
hmlwxGuideVoicesDTO.setRelactiveexhibititemName(name);
}
// 查找展厅相关数据
if (StringUtils.isNotEmpty(hmlwxGuideVoices.getExhibitionRoomId())
&& !StringUtils.equals(hmlwxGuideVoices.getExhibitionRoomId(), "[]")) {
String id = hmlwxGuideVoices.getExhibitionRoomId().replaceAll("\"", "").replace("[", "").replace("]", "");
// 只有一个展厅
HmlwxExhibitionRoom hmlwxExhibitionRoom = hmlwxExhibitionRoomService.get(id);
hmlwxGuideVoicesDTO.setExhibitionRoomName(hmlwxExhibitionRoom.getName());
} model.addAttribute("hmlwxGuideVoices", hmlwxGuideVoicesDTO);
return "modules/hmlwx/hmlwxGuideVoicesForm";
实现添加相关资源的弹出ifreame 并实现多选框的更多相关文章
- 手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法
手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法 最近碰到Android微信内置浏览H5页面,因为其中的文本输入框(input)放置在靠近页面的中下方,点击文本框以后,则输入框会被弹出的手机 ...
- VS2010添加类失败问题,弹出错误框,提示 CodeModel操作失败,无法访问标记数据库
我在使用VS2010添加类的时候,会弹出一个错误框,提示 CodeModel操作失败,可以无法访问标记数据库 英文版是 CodeModel operation failed,Possibly cann ...
- android 长按弹出菜单,复制,粘贴,全选
<!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- WPF弹出带蒙板的消息框
效果图 思路 拿到父级窗体的内容,放入一个容器里,再在容器里放入一个半透明层.将整个容器赋给父级窗体的内容. 关闭时反向操作. 代码 消息窗弹出时 /// <summary> /// 弹出 ...
- javascript弹出带文字信息的提示框效果
// position of the tooltip relative to the mouse in pixel // <html><head><meta charse ...
- ViewController添加子控制器 并且弹出
/** * 初始化子控制器 */ - (void)setupChildVcs { for (int i = 0; i<6; i++) { UIViewController *vc = [[UI ...
- js手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法
if(window.navigator.userAgent.indexOf('Android') > -1 || window.navigator.userAgent.indexOf('Adr' ...
- myeclipse经常弹出Subversion Native Library Not Available框解决办法
两种解决方案:(1)在myeclipse中选择 "Windows" -> Perferences. 然后通过左上方的筛选,选出svn设置菜单,点解左侧的"SVN&q ...
- 安卓弹出对话框——Alertdialog
在Android开发当中,在界面上弹出一个Dialog对话框使我们经常需要做的,本篇随笔将详细的讲解Dialog对话框这个概念,包括定义不同样式的对话框. 一.Dialog 我们首先来看看androi ...
随机推荐
- 「TJOI2019」甲苯先生的滚榜
题目链接 问题分析 参照数据范围,我们需要一个能够在\(O(n\log n)\)复杂度内维护有序数列的数据结构.那么平衡树是很好的选择.参考程序中使用带旋Treap. 参考程序 #pragma GCC ...
- kali VMWOOLS的安装
别人的教程 https://jingyan.baidu.com/article/3ea51489992f1f52e71bba45.html
- 剑指offer-Q60 n个骰子的点数
python版本代码 g_maxValue = 6 # 单个骰子最大的点数 def PrintProbability(number): ''' :param number: 骰子的个数 :return ...
- 分布式-信息方式-ActiveMQ的Destination高级特性3
虚拟destination用来创建逻辑destination,客户端可以通过它来生产和消费消息,它会把消息映射到物理destination. ActiveMQ支持2种方式: 1:虚拟主题(Virtua ...
- C++入门经典-例4.6-使用重载函数
1:代码如下: // 4.6.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...
- ASP.NET图片防盗链(使用一般处理程序)
<img src="你的一般处理程序的地址"/> context.Response.ContentType = "image/jpeg"; Uri ...
- 查询redis中没有设置过期时间的key
#!/bin/sh ## 该脚本用来查询redis集群中,哪些key是没有设置过期时间,对应只需要修改redis的其中一个实例的 host和port ## 脚本会自动识别出该集群的所有实例,并查出对应 ...
- Appium测试框架
介绍 读作['æpɪəm],是selenium的扩展,同样基于WebDriver协议,详见:http://appium.io/. 关于WebDriver终端操作,详见:https://www.w3.o ...
- AOP 代理类的创建
AOP 代理类的创建 入口:AnnotationAwareAspectJAutoProxyCreator#postProcessAfterInitialization 和 AnnotationAwar ...
- 字典的常见操作<一>
<1>修改元素 字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改 Demo from pip._vendor.distlib.compat import raw_input ...