ssm項目之前端數據校驗


本文地址:http://www.cnblogs.com/maplefighting/p/7513506.html 

jquery前端校驗

要是每次校驗都alert彈出窗就有點難看,所以我們可以用bootstrap里面的css樣式

之前的模態框

<!-- 員工添加模態框 -->
    <!-- Modal -->
    <div class="modal fade" id="empAddModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">員工添加</h4>
          </div>
          <div class="modal-body">
            <form class="form-horizontal">
              <div class="form-group">
                <label class="col-sm-2 control-label">empName</label>
                <div class="col-sm-10">
                  <input type="text" name="empName" class="form-control" id="empName_add_input" placeholder="empName">
                  <span class="help-block"></span>
                </div>
              </div>
             <div class="form-group">
                <label class="col-sm-2 control-label">email</label>
                <div class="col-sm-10">
                  <input type="text" name="email" class="form-control" id="email_add_input" placeholder="email@atguigu.com">
                  <span class="help-block"></span>
                </div>
              </div>
             <div class="form-group">
                <label class="col-sm-2 control-label">gender</label>
                <div class="col-sm-10">
                  <label class="radio-inline">
                      <input type="radio" name="gender" id="gender1_add_input" value="M" checked></label>
                  <label class="radio-inline">
                      <input type="radio" name="gender" id="gender2_add_input" value="F"></label>
                </div>
              </div>

               <div class="form-group">
                    <label class="col-sm-2 control-label">deptName</label>
                    <div class="col-sm-4">
                    <select class="form-control" name="dId" id="dept_add_select">

                    </select>
                    </div>
              </div>
            </form>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">關閉</button>
            <button type="button" class="btn btn-primary" id="emp_save_btn">保存</button>
          </div>
        </div>
      </div>
    </div>
View Code

點擊保存按鈕前端校驗,成功了添加到數據庫

點擊保存按鈕的js(只是前端校驗)

//校驗表單數據
    function validate_add_form() { //拿到要校驗的數據,使用正則表達式
        var empName = $("#empName_add_input").val(); var regName = /(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})/; if(!regName.test(empName)) { show_validate_msg("#empName_add_input", "error", "用戶名可以是 2-5 位中文或者6-16位英文和數字、-、_、的組合"); return false; }else { show_validate_msg("#empName_add_input", "success", ""); } var email = $("#email_add_input").val(); var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/; if(!regEmail.test(email)) { //alert("郵箱格式不正確");
            show_validate_msg("#email_add_input", "error", "郵箱格式不正確"); /* $("#email_add_input").parent().addClass("has-error"); $("#email_add_input").next("span").text("郵箱格式不正確"); */
            return false; } else { show_validate_msg("#email_add_input", "success", ""); /* $("#email_add_input").parent().addClass("has-success"); $("#email_add_input").next("span").text(""); */ } return true; } function show_validate_msg(ele, status, msg) { //清除狀態
        $(ele).parent().removeClass("has-success has-error"); $(ele).next("span").text(""); if("success"==status) { $(ele).parent().addClass("has-success"); $(ele).next("span").text(msg); }else if("error"==status){ //alert("用戶名可以是 2-5 位中文或者6-16位英文和數字、-、_、的組合");
            $(ele).parent().addClass("has-error"); $(ele).next("span").text(msg); } } //點擊保存,保存員工
    $("#emp_save_btn").click(function(){ //1、先對要提交給服務器的數據進行校驗
         if(!validate_add_form()) { return false; } //1、模態框中填寫的表單數據提交給服務器進行保存
        //2、發送 Ajax 請求保存員工
 $.ajax({ url:"${APP_PATH}/emp", type:"POST", data:$("#empAddModal form").serialize(), success:function(result) { if(result.code == 100) { //alert(result.msg);
                    //1. 關閉模態框
                    $("#empAddModal").modal("hide"); //2.來到最后一頁
                    //發送 ajax 顯示最后一頁的數據
 to_page(totalRecord); } } }); });
View Code

 

接下來就要校驗數據庫用戶名是否重復了

 但這里發現了一個問題,每次添加進去的元素查詢並不會添加到最后面,而是按部門排序的,我也不是很清楚為啥這樣,但是我們可以給他定個order by id就好啦

EmployeeService.java

 接下來校驗用戶名不重復的

EmployeeController.java中(順便加個校驗名字是否合法)

        /*檢查用戶名是否可用*/ @ResponseBody @RequestMapping("/checkuser") public Msg checkuser(@RequestParam("empName")String empName) { //先判斷用戶名是否是合法的表達式
        String regx = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})"; if(!empName.matches(regx)) { return Msg.fail().add("va_msg", "用戶名必須是 6-16 位數字和字母的組合或者2-5位中文"); } //數據庫用戶名重復校驗
        boolean b = employeeService.checkUser(empName); if(b) { return Msg.success(); } else { return Msg.fail().add("va_msg", "用戶名不可用"); } }
View Code

EmployeeService.java

        /** * 檢驗用戶名是否重復不可用 * @param empName * @return true,代表當前姓名用戶可用 false,代表不可用 */
    public boolean checkUser(String empName) { EmployeeExample example = new EmployeeExample(); Criteria criteria = example.createCriteria(); criteria.andEmpNameEqualTo(empName); long count = employeeMapper.countByExample(example); return count == 0; }
View Code

index.jsp里js添加一個用戶名改變檢驗

//校驗用戶名是否可用
    $("#empName_add_input").change(function() { var empName = this.value; //發送ajax請求校驗用戶名是否可用
 $.ajax({ url:"${APP_PATH}/checkuser", data:"empName="+empName, type:"POST", success:function(result) { if(result.code==100) { show_validate_msg("#empName_add_input","success", "用戶名可用"); $("#emp_save_btn").attr("ajax-va", "success"); }else { show_validate_msg("#empName_add_input","error", result.extend.va_msg); $("#emp_save_btn").attr("ajax-va", "error"); } } }); }); //點擊保存,保存員工
    $("#emp_save_btn").click(function(){ //1、先對要提交給服務器的數據進行校驗
         if(!validate_add_form()) { return false; } //判斷之前的ajax請求是否成功
         if($(this).attr("ajax-va") == "error") { return false; } //1、模態框中填寫的表單數據提交給服務器進行保存
        //2、發送 Ajax 請求保存員工
 $.ajax({ url:"${APP_PATH}/emp", type:"POST", data:$("#empAddModal form").serialize(), success:function(result) { if(result.code == 100) { //alert(result.msg);
                    //1. 關閉模態框
                    $("#empAddModal").modal("hide"); //2.來到最后一頁
                    //發送 ajax 顯示最后一頁的數據
 to_page(totalRecord); } } }); });
View Code

 

但是可以發現,再次點擊新增的時候上次的數據還在,點擊保存沒有再次提交ajax請求,這里就清空算了,不在保存時檢查了

清空時清空樣式等

//清空
    function reset_form(ele) { $(ele)[0].reset(); $(ele).find("*").removeClass("has-error has-success"); $(ele).find(".help-block").text(""); } //點擊新增按鈕彈出模態框
    $("#emp_add_modal_btn").click(function() { //清除表單數據(表單完整重置(表單數據,表單樣式))
        reset_form("#empAddModal form");
View Code

郵箱也可以這么搞一發,不弄了=_=

 不過再測試了一下,發現輸入數據庫存在相同的名字,雖然提示了用戶名不可用

但點擊保存后沒顯示內容了,但是提交不了

審查元素發現

所以提交不了

原因:我們改變時進行ajax請求,但是保存時又進行ajax請求,所以可以細化改下

其實前端校驗也不安全,改一下前端代碼就可以提交了,這里我直接注釋掉了,有空再調了

前端校驗就差不多這樣吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM