JS 从数据库取值表单自动填充

赵小宾 发布于 2013/08/19 10:20
阅读 3K+
收藏 1

我想把数据库取出的值在页面加载后填充到表单,但是为什么没有填充呢?

<body onload="initialise()" >
	
	<center>
		<h1 id="title">编辑题目</h1>
	</center>
<%
Questions q=null;
if(request.getAttribute("q")!=null){
	 q= (Questions)request.getAttribute("q");
	//获得QueryQueByIdservlet存储在request里的数据 
	//System.out.println(q.getQ_head()+"******q.getQ_head()");
}else{
	q=null;
}
String url="";
if(request.getAttribute("isUpdate")!=null){
	url="servlet/UpdateQueServlet";
}
else{
	url="servlet/AddQueServlet";
}
int sID=0;

if(request.getParameter("s_id")!=null){
	sID=Integer.parseInt(request.getParameter("s_id"));
	
}
else{
	sID=0;
}
int q_id=0;
if(request.getParameter("q_id")!=null){
	q_id=Integer.parseInt(request.getParameter("q_id"));
}else{q_id=0;}
%>

	
	<form action="<%=url %>" method="post" name="form" >

	url<input type="text"  value="<%=url %>" readonly="readonly"><br>
	问卷ID<input type="text" name="sID" value="<%=sID %>" readonly="readonly"><br>
	题目ID<input type="text" name="q_id" value="<%=q_id %>" readonly="readonly"><br>
		题目类型:<select name="question_type" onchange="change(this.value)">
			<%
				List<QuestionType> list = new ArrayList<QuestionType>();
				QuestionTypeDao dao = new QuestionTypeDaoImpl();
				list = dao.findAllQueType();// 调用实现类的查询全部方法
				for (int i = 0; i < list.size(); i++) {
					QuestionType qt = list.get(i);
			%>
			<option value="<%=qt.getQt_id()%>"
				<%
				if(q!=null){
				if (qt.getQt_id() == q.getQ_type().getQt_id()) {%>selected <%}}%>>
				<%=qt.getQt_des()%></option>
			<%
				}
			%>
		</select><br> 这里没你想要的类型?请填写新的类型。<br>
		 <input type="text" name="newType"><br> 
		 <input type="submit" value="添加" name="addNewType">&nbsp;&nbsp; 
		 <input type="reset" value="重置" name="reset"><br> 
		 题目名称:
		 <input type="text" id="q_head" name="q_head"/><br>
		题目描述及备注:<br>
		<textarea cols="100" rows="4" id="q_remarks" name="q_remarks"></textarea><br> 
		 题目个数:
		 <input type="text" id="q_number" name="q_number" /><br>
		 <span id="content"> 选项内容(一行一个选项):</span><br>
		 <textarea cols="100" rows="5" id="q_body" name="q_body"></textarea><br> 
		 
		 <input type="submit" value="提交" name="submit">&nbsp;&nbsp; 
		 <input type="reset" value="重置" name="reset">
	</form>

	
	<script type="text/javascript">
	function initialise(){
		<%if(q!=null){
			System.out.println(q.getQ_head()+"***JS******q.getQ_head()");
			%>
		document.getElementById("q_head").value="<%=q.getQ_head()%>";
		document.getElementById("q_remarks").value="<%=q.getQ_remarks()%>";
		document.getElementById("q_number").value="<%=q.getQ_number()%>";
		document.getElementById("q_body").value="<%=q.getQ_body()%>";
		if(<%=q.getQ_type().getQt_des()%>=="单选+输入"||<%=q.getQ_type().getQt_des()%>=="多选+输入"){
			document.getElementById("content").innerHTML ="选项内容(一行一个选项,最后一行为输入框的提示语):"; 
		}
		else{
			document.getElementById("content").innerHTML ="选项内容(一行一个选项):"; 
		}
	<%}%>
	};
	function change(type){
		if(type==3||type==4){
			document.getElementById("content").innerHTML ="选项内容(一行一个选项,最后一行为输入框的提示语):"; 
		}
		else{
			document.getElementById("content").innerHTML ="选项内容(一行一个选项):"; 
		}
	
	}
	</script>
</body>

加载中
0
Ryan-瑞恩
Ryan-瑞恩

把你提前数据的代码。单独搞成一个类来打印看看……或许是你SQL的问题。

赵小宾
赵小宾
非常个感谢,已经解决。问题在于html无法识别换行符但是java又不识别<br/>所以弄得很纠结。我其实走入了一个误区,尽想着页面重复使用,反而加大了页面的调整难度,所以我把新建题目和修改题目的页面分开就可以了!不过依然感谢!
Ryan-瑞恩
Ryan-瑞恩
回复 @木叶下 : 你给我截图看看你的效果啊。。。。
赵小宾
赵小宾
你好!经过调试,结果是因为我的q_body里放的数据有换行,导致不能显示,但是如果经过字符串处理把换行符去掉,再显示的时候在输入框里就看不到想要的一行一个选项的效果了,怎么办?
Ryan-瑞恩
Ryan-瑞恩
回复 @木叶下 : 调试看看是什么情况?
赵小宾
赵小宾
你可以看到这句代码//System.out.println(q.getQ_head()+"******q.getQ_head()"); 在控制台是能显示的,说明数据库是没为题的。
返回顶部
顶部