我們設計一個表單,在本地用戶端驗證,如果驗證不對的話,就不允許提交,非得全部驗證完整正確才允許跳轉
1、javascript 代碼:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>JavaScript禁止提交表單</title>
<script type="text/javascript">
function getObj(id){
var Obj = document.getElementById(id).value;
return Obj;
}
function check(){
if(getObj("test")==""){
alert("文字框輸入為空白,不能提交表單!");
document.getElementById("test").focus;
return false;//false:阻止提交表單
}
}
</script>
</head>
<body>
<form action="index.htm" method="post" onsubmit="return check()">
<input type="text" name="test" id="test">
<input type="submit" value="提交">
</form>
</body>
</html>
2、jquery代碼
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<script type="text/javascript" src="/sunchis/script/jquery-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(":submit[id=tijiao]").click(function(check){
var val = $(":text[id=test]").val();
if(val==""){
alert("文字框輸入為空白,不能提交表單!");
$(":text[id=test]").focus();
check.preventDefault();//此處阻止提交表單
}
});
});
</script>
<title>jQuery禁止提交表單</title>
</head>
<body>
<form action="index.htm" method="post">
<input type="text" name="test" id="test">
<input type="submit" id="tijiao" value="提交">
</form>
</body>
</html>
3、超串連跳轉
我們在超串連的時候,常常串連到一個jsp或者Action,比如:
XXX
這樣做會有一個問題:在test.jsp中,除你傳遞的param1和param2參數外,你用request.getParamter()取任何原來頁面的表單元素都會為空白,這是因為這種方式會產生新的request生命週期,在這個request中只會包含超串連後跟隨的?param1這種參數, 因此我的建議是如果不是很簡單的頁面跳轉(比如回登陸頁面之類的),盡量不要用這種超串連方式。
4、即傳參又提交表單
如果確實既要像上述第一種方式傳參數,又要提交表單的話,可以採取如下方式:
XXX在指令碼中如下處理:
function commonSubmit(url)
{
form1.action="/jsp/managerAction.do?"+url;
form1.submit();
}
提交到Action和jsp是一樣的原理,但要記住
中method=post不能少,否則它只提交表單而不傳param參數了(正好和第一種相反:) )
5、js和java變數互傳
在jsp中經常會遇到把js變數賦給java變數,或者將java變數賦給js變數的情況,在此將通用的處理方法小結如下:
java變數傳給js好辦,var a ="";注意要將引號""加上;js變數給java稍微複雜點,一般是在表單中用一個
的隱藏表單元素,然後在指令碼中將js變數值賦給它:
var jsParamValue=aaaa;
form1.jsParam.value=jsParamValue;
然後就可以request.getPrameter("jsPrama");來取得js變數值了
6、Action中request不會丟掉
不知大家有沒有注意到這個好處,Struts架構中是由一個ActionServlet來作為MVC的控制器角色,jsp頁面提交後request是傳到ActionServelt中的, 而ActionServlet將根據struts-config.xml中的配置調用相應的Action的方法,並將從jsp中獲得的request傳給Action類,這樣request的生命週期是連續的,即你在jsp中提交了表單,在Action中執行了方法,再回到jsp頁面,用request.getParamter()取jsp頁面的表單元素值會發現它還在,這對於頁面下拉式清單等選擇項防止複位是一個很好實現方法。
7、傳參時參數有空格的情況
如果你提交form時帶參數,比如form1.action="/jsp/Action.do?param1="+value1,注意如果value1中帶有空格的話,你在Action中request.getParameter("param1");取得的只是空格前的值,因此如果有這種帶空格的參數在傳遞時,個人建議是將其轉化為特定的字串,value1=value1.replaceAll(" ","%NULL%");然後在Action中將其轉回來:request.getParamter("param1").replaceAll("%NULL%"," ");
8、form-data屬性
如果你要用來上傳檔案的話,注意在一個表單中如果有enctype="multipart/form-data"屬性的話,是不能接收除type=file外的其他表單元素類型的。 即如果你把和放在同一表單中,而該表單有enctype="multipart/form-data"的話,request.getParamter取text的值會為空白, 這個問題的最簡單的解決方案是將單獨放一個表單,上傳檔案時只提交該表單即可。
9、jsp中開強制回應對話方塊的方式
與Swing中類似,jsp中也有強制回應對話方塊這一概念,你可以將一個jsp頁面放到一個強制回應對話方塊中開啟,這樣在強制回應對話方塊消失前,原jsp頁面將不可操作。特別適合父頁面中要做一些額外的選擇操作,而又沒必要跳轉到新的jsp頁面的時候,
開強制回應對話方塊的方式參考如下:
Function open() {
If(window.showModelDialog())
{
Var returnValue = showModelDialog(“/jsp/強制回應視窗包含的jsp頁面路徑”;
help=0;status=0;center=yes;dialogWidth=100pt;dialogHeight=100pt”);
}
}