jQuery Validate限定上傳檔案的格式型別

admin發表於2017-08-31
本章節介紹一下如何限定檔案上傳的型別。

雖然<input type="file"/>具有accept屬性可以限定上傳檔案的型別,但是Validate外掛並不相容。

隨意驗證規則需要我們自己定義,下面就分享一個程式碼例項,它實現了只能夠上傳jpg格式圖片的功能。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
ul li{
  list-style:none;
  margin-top:5px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script src="http://www.softwhy.com/demo/jQuery/js/jquery.validate.js"></script>
<script src="http://www.softwhy.com/demo/jQuery/js/messages_zh.js"></script>
<script>
jQuery.validator.addMethod("checkPic", function(value, element,param) {
  var filepath = value;
  //獲得上傳檔名
  var fileArr=filepath.split("\\");
  var fileTArr=fileArr[fileArr.length-1].toLowerCase().split(".");
  var filetype=fileTArr[fileTArr.length-1];
  //切割出字尾檔名
  if (filetype != param) {
    return false;
  }else{
    return true;
 }
}, "上傳圖片格式不適合");
$(document).ready(function () {
  $("#one").validate({
    rules: {
      age: {
        required: true,
        range:[18,40]
      },
      num: {
        required: true,
        min: 12
      },
      file: {
        required: true,
        checkPic:"jpg"
      }
    },
    messages: {
      age: {
        required: "年齡必須填寫",
        range: "年齡必須介於18-40之間"
      },
      num: {
        required: "數目為必填",
        min: "數目最少為12"
      },
      file: {
        required: "必須上傳圖片",
        checkPic: "檔案格式必須jpg"
      }
    }
  });
});
</script>
</head>
<body>
<form id="one"action="http://www.softwhy.com/">
  <ul>
    <li>年齡:<input type="text" name="age"/></li>
    <li>數目:<input type="text" name="num" /></li>
    <li>圖片:<input type="file"  name="file"/></li>
    <li>
      <input type="submit" value="提交"/>
      <input type="reset" value="重置"/>
    </li>
  </ul>
</form>
</body>
</html>

通過addMethod()自定義驗證檔案格式規則,可以參閱jQuery Validate的addMethod()方法一章節。

相關文章