form表單的onsubmit()問題

之前在項目中爲一個表單(from)編寫onsubmit()腳本的時候,常常須要驗證表單中數據的合法性,因此常會寫道:<form action="/admin/addUser.do" method="post" onsubmit="validateForm();">,試圖在validateForm()中return false來阻止表單的提交。實際上的效果是即便return false 表單 仍是會提交。後來發現 onsubmit="return validateForm()"就沒有問題了。ide

今天在調試項目的bug時,遇到了表單提交前驗證的問題,用一個普通的button按鈕代替submit按鈕,
在提交前觸發這個button的onclick事件,在其事件中觸發form的submit事件。問題出現了,如下是程序代碼:post

<input type="button" name="save" value="保存" onclick="saveProject();"/>google

saveProject()方法以下:spa

function saveProject(){
        var matCategory = document.getElementsByName("matCategory");
        var flag = false;
        for(i=0;i<matCategory.length;i++){
            var checkbox = matCategory[i];
            if(checkbox.checked == true){
                flag = true;break;
            }
        }
        if(flag){
            proForm.submit();
            return;

        }
        alert("請選擇產品分類!");
       
    }調試

卻發現並無觸發form的onsubmit方法,而是直接提交了。奇怪了,難道沒有這種方式沒法結合form的onsubmit方法嗎?後來經過百度和google將saveProject方法改成以下:在表單提交前作了一下驗證orm

function saveProject(){
        var matCategory = document.getElementsByName("matCategory");
        var flag = false;
        for(i=0;i<matCategory.length;i++){
            var checkbox = matCategory[i];
            if(checkbox.checked == true){
                flag = true;break;
            }
        }
        if(flag){
            if(document.proForm.onsubmit() == true){
                proForm.submit();
            }
            return;

        }
        alert("請選擇產品分類!");
       
    }事件

這個問題耗費了我半個小時,所以記下來但願下次再也不犯錯,不得不說細節決定成功與否!get

相關文章
相關標籤/搜索