使用js动态添加组件
在文章开始之前,我想说两点
1 自己初学js,文章的内容在大神看来可能就是不值一提,但是谁都是从hello world来的,望高 手不吝指教#
2 我知道这个标题起的比较蛋疼,大家看图就能说明问题:
初始页面如下图:
点击"有"后,如下图:
点击"点此添加条目"两次后,如下图:
OK,我们分析代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%System.out.println(request.getContextPath()); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新建慢病档案</title>
<link rel="stylesheet" type="text/css" href="../../../css/styles.css" />
<script type="text/javascript" src="../../../js/jquery1.7.js"></script>
<script type="text/javascript" src="js/familyHistoryXs.js"></script>
</head>
<body>
<s:form action="xx" method="post" theme="simple" >
<div align="center" id="div_main">
<table class="tab_head" width="100%">
<tr>
<td>
<h2 align="center">使用js动态添加条目</h2>
</td>
</tr>
</table>
<br/>
<div class="tab_content">
<div class="subTabs" >
<br/>
<div id="family" class="subTabs">
<table class="tab_frm" width="100%">
<tr>
<td class="left" width="30%">
有无其他条目:
</td>
<td>
无<input type="radio" name="family" id="radio_drug_no" value="no" checked="true"/>
有<input type="radio" name="family" value="yes"/>
<a id="a_family" style="display:none" href='#' onclick="addFamily();return false;">点此添加条目</a>
</td></tr></table>
<table class="tab_frm" width="100%" style="display:none;" id="familyHistory">
<tr >
<td class="left" width="10%" rowspan="2">
与本人关系:<s:select list="#{'-1':'-请选择-','父亲':'父亲','母亲':'母亲','哥哥':'哥哥','弟弟':'弟弟','姐姐':'姐姐','妹妹':'妹妹','儿子':'儿子','女儿':'女儿'}" theme="simple"/></td>
<td class="left" width="15%" >所患疾病</td>
<td width="15%"><input type="checkbox" value="高血压" onclick="familyTime(this)">高血压
</td>
<td width="15%"><input type="checkbox" value="糖尿病" onclick="familyTime(this)">糖尿病
</td>
<td width="15%"><input type="checkbox" value="冠心病" onclick="familyTime(this)">冠心病
</td>
</tr>
<tr>
<td class="left" width="15%">备注(如患其他疾病请填写)</td>
<td width="75%" colspan="5"><s:textarea theme="simple" cssStyle="width:97%;overflow-y:visible;" /></td>
</tr>
</table>
<br/><br/>
</div>
</div>
</div>
<input type="button" name="back" value="上一步"
onclick="javascript:window.location.href='findMedicalHistory.action'">
<input type="submit" value="下一步" id="submitInfo"/>
</div>
</s:form>
</body>
</html>
html引入了familyHistoryXs.js,我们进去看看
/**
*
*/
var familyCount;
$(document).ready(function(){
familyCount=0;
//给所有name为family的input上绑定事件 click
//一旦触发了 就去运行radioEvent方法
$("input[name='family']").bind("click",function(){
radioEvent($(this));
});
});
function radioEvent(e) {
//a_family默认的diplay是none 也就是不显示
//如果我点击了yes 就让它显示
//#a_family 就是网页里那个 点此添加条目 的东西
//如果点击 无 首先隐藏 点此添加条目
//接着下面的条目也祛除掉
if ("yes" == e.val()) {
$("#a_family").attr("style", "display:''");
} else {
$("#a_family").attr("style", "display:none");
for ( var i = 0; i < familyCount; i++) {
$("#familyHistory" + i).remove();
}
familyCount = 0;
}
}
function addFamily(){
var tr=$("#familyHistory").clone();
tr.attr("id","familyHistory"+familyCount);
tr.attr("style","display:'';margin-top:10px");
$("#family").append(tr);
var select=tr.find("select").eq(0);
select.attr("name","fimalyList["+familyCount+"].patientRelation");
select.attr("id","fimalyList["+familyCount+"].patientRelation");
var gxy=tr.find("input").eq(0);
gxy.attr("name","fimalyList["+familyCount+"].gxy");
gxy.attr("id","fimalyList["+familyCount+"].gxy");
var tnb=tr.find("input").eq(1);
tnb.attr("name","fimalyList["+familyCount+"].tnb");
tnb.attr("id","fimalyList["+familyCount+"].tnb");
var gxb=tr.find("input").eq(2);
gxb.attr("name","fimalyList["+familyCount+"].gxb");
gxb.attr("id","fimalyList["+familyCount+"].gxb");
var note=tr.find("textarea").eq(0);
note.attr("name","fimalyList["+familyCount+"].note");
note.attr("id","fimalyList["+familyCount+"].note");
familyCount++;
}
相应的css文件
body {
margin-top: 8px;
background-image: url(../images/bg.gif);
background-repeat: repeat-x repeat-y;
font-size: 13px;
}
.tab_data {
border: 1px solid #0058a3;
border-collapse: collapse;
background-color: #eaf5ff;
font-size: 13px;
}
.tab_data th {
border: 1px solid #0058a3;
background-color: #4bacff;
color: #FFFFFF;
font-weight: bold;
padding: 2px 1px;
text-align: center;
height: 30px;
}
.tab_data td {
border: 1px solid #0058a3;
/*text-align: left;*/
padding: 2px 4px;
height: 28px;
}
tr.darkrow {
background-color: #c7e5ff;
}
.tab_frm {
border: 1px solid #0058a3;
border-collapse: collapse;
background-color: #eaf5ff;
font-size: 13px;
}
.tab_frm td {
padding: 2px 0px 2px 8px;
border: 1px solid #0058a3;
height: 30px;
}
td.left {
background-color: #d1dff0;
font-weight: bold;
text-align: left;
}
td.right {
text-align: left;
}
td.center {
text-align: center;
}
.btn_normal {
height: 24px;
width: 60px;
font-size: 13px;
margin: 0px 6px;
}
.btn_long {
height: 24px;
width: 112px;
font-size: 13px;
margin: 0px 6px;
}
.btn_in_tab {
height: 22px;
width: 44px;
font-size: 12px;
margin: 0px 1px;
}
.spn_flag_1 {
font-size: 12px;
margin-left: 10px;
color: red;
}
.tab_head {
font-size: 12px;
font-weight: bold;
text-align: left;
}
.tab_head td {
vertical-align: bottom;
}
a {
text-decoration: none;
}
a:link {
color: blue;
}
a:visited {
color: blue;
}
a:hover {
color: blue;
}
.flderr {
color: red;
font-size: 14px;
font-weight: bold;
}
.ifr_page{
width: 100%;
height: 430px;
margin: 0px;
border-width: 0px;
overflow: hidden;
}
.tab_stat_in {
border: 0px;
background-color: #eaf5ff;
font-size: 13px;
width: 100%;
}
.tab_stat_in td {
text-align: center;
border: 0px;
}
.p_nopriv{
line-height:10%;
color:red;
}
.p_nodata{
line-height:10%;
color:brown;
}
.p_hasdata{
line-height:10%;
}
参考资料
http://blog.csdn.net/cike121272604/article/details/5809114
使用js动态添加组件的更多相关文章
- js动态添加onload、onresize、onscroll事件(另类方法)
js动态添加onload.onresize.onscroll事件(另类方法) window 的 onload.onresize.onscroll 事件,跟其他的事件不一样,它不能用 attachE ...
- form表单 无法提交js动态添加的表单元素问题。。
第一种情况, 这种情况js动态添加的表单元素是不能提交到服务器端的 <table> <form method="post" action=" url ...
- 【原生js】js动态添加dom,如何绑定事件
首先要明白浏览器在加载页面的时候是按顺序来加载的,这样以来就很清楚了,js动态添加dom以后,这些dom并没有绑定事件,这个时候最简单的一个办法就是:将绑定事件的方法封装到一个函数A中,在动态添加完d ...
- 原生JS动态添加和删除类
原生JS动态添加和删除类 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等 ...
- MUI 里js动态添加数字输入框后,增加、减少按钮无效
numbox 的自动初化是在 mui.ready 时完成的mui 页面默认会自动初始化页面中的所有数字输入框,动态构造的 DOM 需要进行手动初始化.比如:您动态创建了一个 ID 为 abc 的数字输 ...
- Angular使用总结 --- 通过指令动态添加组件
之前自己写的公共组件,都是会先引入,需要调起的时候再通过service控制公共组件状态.值.回调函数什么的.但是有一些场景不适合这种方式,还是动态添加组件更加好.通过写过的一个小组件来总结下. 创建组 ...
- 原生js动态添加style,添加样式
原生js动态添加style,添加样式 第一种 var style="[assign-url='"+str+"']{display:initial}"; var ...
- Js动态添加复选框Checkbox
Js动态添加复选框Checkbox的实例方法!!! 首先,使用JS动态产生Checkbox可以采用如下类似的语句: var checkBox=document.createElement(" ...
- js 动态添加表单 table tr
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- moment.js常用时间示例,时间管理
'今天': moment() '昨天': moment().subtract(1, 'days') '过去7天':moment().subtract(7, 'days'),moment() '上月': ...
- 我与android的缘分
android的开始 本人是一名大三的学生,大一大二主要学习的是php后台开发,在大一的时候做过一些小的网站系统,也参加过一些大学生计算机相关的比赛.这次开始着手于安卓开发,也是一时的兴起.因为跟我们 ...
- 1-学习GPRS_Air202(Air202开发板介绍)
记得自己第一次实现远程通信是在学校里用SIM900A实现的,随着WIFI模块的普及自己就开始用WIFI模块了,当然WIFI模块已经用的很... WIFI模块要想实现远程控制必须连接路由器,其实在做王哥 ...
- electron应用以管理员权限启动
最近在用electron开发PC桌面应用,其中有个需求就是整个应用以管理员权限启动.很头痛,各种google,baidu. 最后终于解决了,可以分为三个步骤,做个总结分享. 一.如果没有manifes ...
- Java面试18|关于进程、线程与协程
1.IPC(Inter-Process Communication,进程间通信)与线程通信的几种方式 # 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进 ...
- ACM Red and Black
有一个矩形的房间,覆盖着方砖. 每个瓷砖都是红色或黑色. 一个男人站在黑色的瓷砖上,他可以移动到四个相邻的瓷砖之一. 但他不能在红砖上移动,他只能在黑砖上移动. 编写一个程序来计算他可以通过重复上述 ...
- Docker外部访问容器
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射. 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放 ...
- Java内存泄漏分析系列之四:jstack生成的Thread Dump日志线程状态
原文地址:http://www.javatang.com Thread Dump日志的线程信息 以下面的日志为例: "resin-22129" daemon prio=10 tid ...
- mysql5.7在centos上安装的完整教程以及相关的“坑”
安装前的准备 Step1: 如果你系统已经有mysql,如一般centos自带mysql5.1系列,那么你需要删除它,先检查一下系统是否自带mysql yum list installed | gre ...
- Django中过期@cache_page中缓存的views数据
django的缓存系统中,cache_page 这个装饰器非常好用,只要添加一个装饰器就可以缓存views的响应内容,但是django没有提供过期这个views缓存数据的功能. @cache_page ...