关于下拉框 比如说,第一个下拉框里面是信息学院,艺术学院,文法学院,如果选了信息学院,那么第二个下拉框里的选项就应该是计算机,自动化,通信……,如果第一个下拉框选的是艺术学院,那么第二个下拉框里的选项就应该是音乐,美术……。ps:是用struts中的html标签 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <input type="select" name="" onChange="js();"><script language="javascript"> function js() { ........... }</script> 为什么会出现下面的错误信息?Attribute onChange invalid according to the specified TLD struts中的html标签,支持onChange这个动作吗? http://expert.csdn.net/Expert/search.asp?bigclassid=0&smallclassid=5409察看源代码吧这只是一种方法,如果你想从数据库里面提取出来的话,可以当前面的onchange时提交一下检索出来后面的下拉列表的值祝你好运 struts中的html标签 不会!我们还是用js实现的! 将相关连的选项放到javascript定义的数组里,然后对相关的选项通过定义onChange事件进行联动,这样速度较快 <HTML><HEAD><TITLE></TITLE><SCRIPT LANGUAGE=javascript><!--function doChange(){ doAddOption(select1.value);}function doAddOption(s){ len = select2.options.length; if(len > 0) { for(i=len - 1; i>=0; i--) select2.remove(i); } for(i=0; i<4; i++) { var oOption = document.createElement("OPTION"); oOption.text=s + "_" + i; oOption.value=s + "_" + i; select2.add(oOption); }}//--></SCRIPT></HEAD><BODY><SELECT size=1 id=select1 name=select1 language="javascript" onChange="doChange()"><OPTION value="a">A</OPTION><OPTION value="b">B</OPTION><OPTION value="c">C</OPTION></SELECT><br><SELECT size=1 id=select2 name=select2></SELECT></BODY></HTML> 怎么可以让onchange触发action,然后让action做处理,再送回来? 我这里有一个下拉框联动的东东,不知道对你有没有用?下拉框联动下拉框联动有两个java类,两个jsp页面,和一个js组成。MultiSelect.java该类用于生成实现联动需要的Array数组package select;import java.util.*;import java.sql.*;import java.io.*;public class MultiSelect { /** *产生JavaScript中用于联动的array代码 *以省市为例 *一般为了javascript程序的方便,建议输出格式为: *subcat1[subcat1.length] = new Array("江阴","12.10","12"); *其中"江阴"的值为"12.10","12"对应江苏省,越大的范围的值越往后 *subcat1[subcat1.length] = new Array("常州","12.11","12"); **/ public static String getArray(String name, String sql) throws java.sql.SQLException { Connection conn=null; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test", "test", "test"); } catch (java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: " + e.getMessage()); } Statement stmt = conn.createStatement(); ResultSet rs=stmt.executeQuery(sql); StringBuffer sb = new StringBuffer(); while(rs.next()){ sb.append(name + "[" + name + ".length] = new Array(" + getString(rs.getString(0),rs.getString(1),rs.getString(2)) + ");\n"); } return sb.toString(); } private static String getString(String s1,String s2,String s3) { String temp = "\"" + s1 + "\",\""+s2+"\",\""+s3+"\""; return temp; }}--------------------------------------------------------------------------------SelectJS 该类主要是用来生成sql语句。package select;public class SelectJS { /** * 写出sql,调用 * @param name 数组名称 * @return * @throws java.sql.SQLException */ public static String getProducts(String name) throws java.sql.SQLException { return MultiSelect.getArray(name, "select describe,code,fcode from testone " ); }}---------------------------------------------------------------------------------citys.jsp主要是用来得到Array数组<%@ page contentType="text/html;charset=GB2312" %><%@ page import="select.*"%>var citys = new Array();<%=SelectJs.getDealerCity("citys")%>-----------------------------------------------------------------------------------select.js 主要是用来显示下拉框中的数据function clearselect(Aa){ clearList(Aa); Aa.options[Aa.length] = new Option("没有回答", "");} //use "" to clear all:(值的索引为1)//Aa为被联动的select,//locationid为主联动值,//arr为用于生成的Array,//index1为Array中用于比较主联动值的索引function changelocation1(Aa,locationid,arr,index1){ clearselect(Aa); var i; for (i=0;i < arr.length; i++){ if (arr[i][index1] == locationid ){ Aa.options[Aa.length] = new Option(arr[i][0], arr[i][1]); } }} //from chinaquestfunction clearList(ctrl){ if (document.all) { for(;ctrl.options.length>0;) ctrl.options.remove(ctrl.options.length-1); }else{ for(;ctrl.options.length>0;) ctrl.options[ctrl.options.length-1] = null; }}-------------------------------------------------------------------------------------selecttest.jsp 进行页面使用<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><script language="JavaScript" src="citys.jsp"></script><script language="JavaScript" src="select.js"></script><body><form method="post"> <select name="sel_brand" onchange="changelocation1(this.form.elements['sel_city'],this.value,citys,2);"> <% String sql="select code,Describe from testone "; ResultSet rs=stmt.executeQuery(sql); while(rs.next()) { %> <option value="<%=rs.getString(0)%>"><%=rs.getString(1)%></option> <% } %> </select> <select name="sel_city"> <option value="">没有回答</option> </select></form></body></html> 关于Ext用表单提交一个下拉框的问题 JSP页面跳转问题 jsp include 时的一个棘手问题 关于上海找工作的历程 servlet?? 关于GOOGLE IG Myeclipse中 JBOSS显示启动不跳出网页 jsp中,对从数据库提取的数据比较,出现java.lang.NullPointerException异常。 页面上的除法问题。在线等!!!! web项目中jfreechart显示柱状图 请教tomcat5.0的下载地址,绝对给分,谢谢. 一个jsp页面自动刷新的问题?
function js() {
...........
}
</script>
Attribute onChange invalid according to the specified TLD
察看源代码吧这只是一种方法,如果你想从数据库里面提取出来的话,可以当前面的onchange时提交一下检索出来后面的下拉列表的值祝你好运
<HEAD>
<TITLE></TITLE>
<SCRIPT LANGUAGE=javascript>
<!--
function doChange()
{
doAddOption(select1.value);
}function doAddOption(s)
{
len = select2.options.length;
if(len > 0)
{
for(i=len - 1; i>=0; i--)
select2.remove(i);
} for(i=0; i<4; i++)
{
var oOption = document.createElement("OPTION");
oOption.text=s + "_" + i;
oOption.value=s + "_" + i;
select2.add(oOption);
}
}
//-->
</SCRIPT></HEAD>
<BODY>
<SELECT size=1 id=select1 name=select1 language="javascript" onChange="doChange()">
<OPTION value="a">A</OPTION>
<OPTION value="b">B</OPTION>
<OPTION value="c">C</OPTION>
</SELECT>
<br>
<SELECT size=1 id=select2 name=select2>
</SELECT>
</BODY>
</HTML>
下拉框联动
下拉框联动有两个java类,两个jsp页面,和一个js组成。
MultiSelect.java
该类用于生成实现联动需要的Array数组
package select;
import java.util.*;
import java.sql.*;
import java.io.*;
public class MultiSelect {
/**
*产生JavaScript中用于联动的array代码
*以省市为例
*一般为了javascript程序的方便,建议输出格式为:
*subcat1[subcat1.length] = new Array("江阴","12.10","12");
*其中"江阴"的值为"12.10","12"对应江苏省,越大的范围的值越往后
*subcat1[subcat1.length] = new Array("常州","12.11","12");
**/
public static String getArray(String name, String sql) throws java.sql.SQLException {
Connection conn=null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn =
DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test",
"test", "test");
} catch (java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: " + e.getMessage());
}
Statement stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
StringBuffer sb = new StringBuffer();
while(rs.next()){
sb.append(name + "[" + name + ".length] = new Array(" +
getString(rs.getString(0),rs.getString(1),rs.getString(2)) + ");\n");
}
return sb.toString();
}
private static String getString(String s1,String s2,String s3) {
String temp = "\"" + s1 + "\",\""+s2+"\",\""+s3+"\"";
return temp;
}
}
--------------------------------------------------------------------------------
SelectJS 该类主要是用来生成sql语句。
package select;
public class SelectJS {
/**
* 写出sql,调用
* @param name 数组名称
* @return
* @throws java.sql.SQLException
*/
public static String getProducts(String name) throws java.sql.SQLException {
return MultiSelect.getArray(name,
"select describe,code,fcode from testone "
);
}
}
---------------------------------------------------------------------------------
citys.jsp主要是用来得到Array数组
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="select.*"%>var citys = new Array();
<%=SelectJs.getDealerCity("citys")%>
-----------------------------------------------------------------------------------
select.js 主要是用来显示下拉框中的数据
function clearselect(Aa){
clearList(Aa);
Aa.options[Aa.length] = new Option("没有回答", "");
}
//use "" to clear all:(值的索引为1)
//Aa为被联动的select,
//locationid为主联动值,
//arr为用于生成的Array,
//index1为Array中用于比较主联动值的索引
function changelocation1(Aa,locationid,arr,index1){
clearselect(Aa);
var i;
for (i=0;i < arr.length; i++){
if (arr[i][index1] == locationid ){
Aa.options[Aa.length] = new Option(arr[i][0], arr[i][1]);
}
}
}
//from chinaquest
function clearList(ctrl){
if (document.all) {
for(;ctrl.options.length>0;)
ctrl.options.remove(ctrl.options.length-1);
}else{
for(;ctrl.options.length>0;)
ctrl.options[ctrl.options.length-1] = null;
}
}
-------------------------------------------------------------------------------------
selecttest.jsp 进行页面使用
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script language="JavaScript" src="citys.jsp"></script>
<script language="JavaScript" src="select.js"></script>
<body>
<form method="post">
<select name="sel_brand"
onchange="changelocation1(this.form.elements['sel_city'],this.value,citys,2);">
<%
String sql="select code,Describe from testone ";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {
%>
<option value="<%=rs.getString(0)%>"><%=rs.getString(1)%></option>
<% } %>
</select>
<select name="sel_city">
<option value="">没有回答</option>
</select>
</form>
</body>
</html>