javascript 表單驗證和button跳轉

來源:互聯網
上載者:User

我們設計一個表單,在本地用戶端驗證,如果驗證不對的話,就不允許提交,非得全部驗證完整正確才允許跳轉

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”);
   }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.