這是我參與8月更文挑戰的第12天,活動詳情查看:8月更文挑戰javascript
jQuery驗證及限制java
$(document).on("keypress", ".txt-valid-len", function (e)
{
return (this.value.length < $(this).attr("maxlength"));
});
複製代碼
而後咱們只須要在input中添加txt-valid-len這個class屬性。而且加入maxlength屬性指定長度就能夠了。jquery
<input type="text" id="user_name" name="name" class="form-control txt-valid-len" maxlength="11" />
複製代碼
jquery.min.js
jquery.validate.js
複製代碼
這兩個js在官網的jQuery中都是包含的,直接下載引入就好了。ajax
有了這兩個js咱們還須要頁面上的form表單。表單就是咱們日常的表單。json
<form id="myform" method="post" action="#">
<p>
<label for="myname">用戶名:</label>
<!-- id和name最好同時寫上 -->
<input id="myname" name="myname" />
</p>
<p>
<label for="age">年齡:</label>
<input id="age" name="age" />
</p>
<p>
<label for="email">E-Mail:</label>
<input id="email" name="email" />
</p>
<p>
<label for="password">登錄密碼:</label>
<input id="password" name="password" type="password" />
</p>
<p>
<label for="confirm_password">確認密碼:</label>
<input name="confirm_password" type="password" />
</p>
<p>
<input class="submit" type="submit" value="當即註冊" />
</p>
</form>
複製代碼
$("#myform").validate();
複製代碼
$("#myform").validate({
debug: true, //調試模式取消submit的默認提交功能
//errorClass: "label.error", //默認爲錯誤的樣式類爲:error
focusInvalid: false, //當爲false時,驗證無效時,沒有焦點響應
onkeyup: false,
submitHandler: function(form){ //表單提交句柄,爲一回調函數,帶一個參數:form
alert("提交表單");
form.submit(); //提交表單
},
rules:{
myname:{
required:function(element){
if( $("#age").val() < 13){
return true;
}
else{
return false;
}
}
},
email:{
required:true,
email:true
},
password:{
required:true,
rangelength:[3,10]
},
confirm_password:{
equalTo:"input[name=password]"
}
},
messages:{
myname:{
required:"必填"
},
email:{
required:"<span style='color:red;'>只容許輸入整數。</span>",
email:"E-Mail格式不正確"
},
password:{
required: "不能爲空",
rangelength: $.validator.format("密碼最小長度:{0}, 最大長度:{1}。")
},
confirm_password:{
equalTo:"兩次密碼輸入不一致"
}
}
});
複製代碼
<span style='color:red;'>只容許輸入整數。</span>
複製代碼
$("#myname").valid();
複製代碼
$("#myform").validate({
rules: {
email: {
required: true,
email: true,
remote: {
type:"post",
dataType: "json",
contentType : "application/json",
url:"/adminManage/email.bsh"
}
}
}
});
複製代碼
@RequestMapping("/email.bsh")
@ResponseBody
public Object email(HttpServletRequest request,HttpServletResponse response)
{
return "已經存在";
}
複製代碼
@RequestMapping("/email.bsh")
@ResponseBody
public Object email(HttpServletRequest request,HttpServletResponse response)
{
return "true";
}
複製代碼
@RequestMapping("/email.bsh")
@ResponseBody
public Object email(HttpServletRequest request,HttpServletResponse response)
{
return true;
}
複製代碼
@RequestMapping("/email.bsh")
@ResponseBody
public Object email(HttpServletRequest request,HttpServletResponse response)
{
return false;
}
複製代碼
參考網址markdown
var validator = $("#myform").validate({
debug: true, //調試模式取消submit的默認提交功能
errorClass: "haha",//默認爲錯誤的樣式類爲:error
focusInvalid: false,
onkeyup: false,
submitHandler: function(form){ //表單提交句柄,爲一回調函數,帶一個參數:form
alert("提交表單");
//form.submit(); 提交表單
},
rules: { //定義驗證規則,其中屬性名爲表單的name屬性
username: {
required: true,
minlength: 2,
remote: "uservalid.jsp" //傳說當中的ajax驗證
},
firstpwd: {
required: true,
//minlength: 6
rangelength: [6,8]
},
secondpwd: {
required: true,
equalTo: "#password"
},
sex: {
required: true
},
age: {
required: true,
range: [0,120]
},
email: {
required: true,
email: true
},
purl: {
required: true,
url: true
},
afile: {
required: true,
accept: "xls,doc,rar,zip"
}
},
messages: { //自定義驗證消息
username: {
required: "用戶名是必需的!",
minlength: $.format("用戶名至少要{0}個字符!"),
remote: $.format("{0}已經被佔用")
},
firstpwd: {
required: "密碼是必需的!",
rangelength: $.format("密碼要在{0}-{1}個字符之間!")
},
secondpwd: {
required: "密碼驗證是必需的!",
equalTo: "密碼驗證須要與密碼一致"
},
sex: {
required: "性別是必需的"
},
age: {
required: "年齡是必需的",
range: "年齡必須介於{0}-{1}之間"
},
email: {
required: "郵箱是必需的!",
email: "請輸入正確的郵箱地址(例如 myemail@163.com)"
},
purl: {
required: "我的主頁是必需的",
url: "請輸入正確的url格式,如 http://www.domainname.com"
},
afile: {
required: "附件是必需的!",
accept: "只接收xls,doc,rar,zip文件"
}
},
errorPlacement: function(error, element) { //驗證消息放置的地方
error.appendTo( element.parent("td").next("td") );
},
highlight: function(element, errorClass) { //針對驗證的表單設置高亮
$(element).addClass(errorClass);
},
success: function(label) {
label.addClass("valid").text("Ok!")
}
/*,
errorContainer: "#error_con", //驗證消息集中放置的容器
errorLabelContainer: "#error_con ul", //存放消息無序列表的容器
wrapper: "li", //將驗證消息用無序列表包圍
validClass: "valid", //經過驗證的樣式類
errorElement: "em", //驗證標籤的名稱,默認爲:label
success: "valid" //驗證經過的樣式類
*/
});
複製代碼
不論何時,當你的表單中的多個字段含有相同的驗證規則及驗證消息,重構規則能夠減小不少重複。使用 addMethod 和 addClassRules 將很是有效果。
假使已經重構了以下規則:app
// alias required to cRequired with new message
$.validator.addMethod("cRequired", $.validator.methods.required,
"Customer name required");
// alias minlength, too
$.validator.addMethod("cMinlength", $.validator.methods.minlength,
// leverage parameter replacement for minlength, {0} gets replaced with 2
$.format("Customer name must have at least {0} characters"));
// combine them both, including the parameter for minlength
$.validator.addClassRules("customer", { cRequired: true, cMinlength: 2 });
<input name="customer1" class="customer" />
<input name="customer2" class="customer" />
<input name="customer3" class="customer" />
複製代碼
addMethod( name, method, [message] )
返回:undefineddom
參數 name 類型:String
要添加的方法名,用於標識和引用,必須是一個有效的javascript標識符。koa
參數 method 類型:Callback 方法的實現部分,返回true若是表單元素經過驗證。jsp
參數 message(Optional) 類型:String, Function 該方法的默認驗證消息。能夠用 jQuery.validator.format(value) 方法建立。若是未定義該參數,則使用本地已存在的驗證消息,另外,必須爲指定的表單元素定義驗證消息。
說明:添加一個用戶自定義的驗證方法。它由方法名(必須是一個合法的javascript標識符)、基於javascript的函數及默認的驗證消息組成。
addClassRules( name, rules ) 返回:undefined
參數 name 類型:String 要添加的樣式規則名。
參數 rules 類型:Options 規則選項。
說明:添加一個複合的樣式驗證方法。對於將多個聯合使用的規則重構進單個樣式中很是有用。