表单提交校验功能

前端样式用bootstrap,依赖jquery,应用jquery自带的validation插件。

其实校验是一个小功能,做了还几天主要是因为碰到了两个问题,
一个是对于提示信息样式添加不出效果,

一个是不经过submit提交form表单。


对于第一个问题,是因为CSS样式优先级问题,刚刚接触bootstrap,个性化样式

用的不熟,到现在也不知道如何解决CSS优先级问题。但removeClass清除样式可以用。

其中用到的几句代码是

     

  //自定义错误消息放到哪里
errorPlacement : function(error, element) {
element.next().remove();//删除显示图标
element.after('<span class=" form-control-feedback" aria-hidden="true"></span>');
element.closest('.form-group').append(error);//显示错误消息提示
},
//给未通过验证的元素进行处理
highlight : function(element) {
$(element).closest('.form-group').addClass('has-error has-feedback');
},
//验证通过的处理
success : function(label) {
var el=label.closest('.form-group').find("input");
el.next().remove();//与errorPlacement相似
el.after('<span class=" form-control-feedback" aria-hidden="true"></span>');
label.closest('.form-group').removeClass('has-error').addClass("has-feedback has-success");
label.remove();
},

如果想要改样式,可以调试页面看决定相应样式的CSS文件,直接对齐修改。

对于第二个问题,也是试探中成功的。在这里简单说下适合的JSP情况吧,在弹出表单中加校验,没有submit按钮,

只有ajax点击触发的事件,这样在提交的时候如何保证,在用jquery validation插件的情况下能对指定表单进行校验。

    var validator = $("#form1").validate({
rules: {
},
messages:{
}
}); $(".selector").on('click',function(){
//验证通过后提交
if(validator.form()){
//自己写的ajax调用
}
});

这样写着实有些笨拙,本人也试过直接在插件的接口上写ajax方法,但是都是submit,让我一通尝试,没有达到预期效果。

比如W3C上这样写

$(".selector").validate({
submitHandler: function(form)
{
$(form).ajaxSubmit();
}
})

submitHandler我理解为一个回调函数,不能自己写请求。尝试过用remote,也没有成功,如果有人可以做出来,也麻烦分享一下,

 我也可以摒弃我的野路子。

 

 

 在这如果想个性化校验,可以再jquery.validation.js中自己去改,或者自己写新的method。

  // 手机号码验证
jQuery.validator.addMethod("isPhone", function(value, element) {
var length = value.length;
return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(14[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/.test(value));
}, "请正确填写您的手机号码。");

再说一说自己对改插件的见解,这个的应用首先是JSP代码会很干净,封闭性很好,标签中没有加另外的属性,而是在js中配置。

但是有一点,我发现它在.form-group的div中能很好地应用,table中就不行了,难免有些拘束。

再就是除了一些自己加的method可以共用以外,validate方法只能定位一个form表单,这样减小了插件代码的复用性。

但是他的.form()方法可以返回boolean值,这样也为我们个性化校验方式提供了便利。

下面是页面效果

bootstrap validation submit的更多相关文章

  1. .NET MVC 学习笔记(五)— Data Validation

    .NET MVC 学习笔记(五)—— Data Validation 在实际应用中,我们需要对数据进行增查改删业务,在添加和修改过程中,无论你编写什么样的网页程序,都需要对用户的数据进行验证,以确数据 ...

  2. bootstrap中的modal 模态弹出框不能放在 form_for里面,一弹出modal会自动submit掉form

    bootstrap中的modal 模态弹出框不能放在 form_for里面,一弹出modal会自动submit掉form

  3. 12月6日 看Active Record validation ; 做jdstore ,注意gem bootstrap 版本只支持bootstrap3。

    Active Record validation: new_record?()//用于验证刚新建,但没存入database中的数据 ,返回true或false persisted?() //和new_ ...

  4. bootstrap 下的 validation插件

    http://reactiveraven.github.io/jqBootstrapValidation/

  5. MVC遇上bootstrap后的ajax表单模型验证

    MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...

  6. jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示

    类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此.最终效果如下: 后端使用Asp.net mvc5,前端框架有:jquery.validate.jq ...

  7. ASP.NET MVC使用Bootstrap系统(2)——使用Bootstrap CSS和HTML元素

    阅读目录 Bootstrap 栅格(Grid)系统 Bootstrap HTML元素 Bootstrap 验证样式 ASP.NET MVC创建包含Bootstrap样式编辑模板 小结 Bootstra ...

  8. validate[.unobtrusive]和Bootstrap实现tooltip错误提示

    validate[.unobtrusive]和Bootstrap实现tooltip错误提示 类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此.最终效 ...

  9. Asp.net MVC利用Ajax.BeginForm实现bootstrap模态框弹出,并进行前段验证

    1.新建Controller public ActionResult Index() { return View(); } public ActionResult Person(int? id) { ...

随机推荐

  1. jquery——无缝滚动

    无缝滚动: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. 017 Letter Combinations of a Phone Number 电话号码的字母组合

    给定一个数字字符串,返回数字所有可能表示的字母组合. 输入:数字字符串 "23"输出:["ad", "ae", "af" ...

  3. ssh无需密码登录linux服务器

    使用下例中ssky-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机. ssh-keygen 创建公钥和密钥. ssh-copy-id 把本地主 ...

  4. C# 几种数据类型转换方式

    1.(int)变量名[强制类型转换] 该转换方式主要用于数字类型之间的转换,从int类型向long,float,double,decimal 类型转换可以使用隐式转换,但从long型到int 就需要使 ...

  5. Rematch Redux的替代品

    前言:Rematch和vuex很像. 文档:https://github.com/yurizhang/rematch 简介: 先看看rematch的官方介绍: Rematch是没有boilerplat ...

  6. android读写SD卡封装的类

    参考了网上的一些资源代码,FileUtils.java: package com.example.test; import java.io.BufferedInputStream; import ja ...

  7. 2 cmd中startup显示运行不了显示“不是内部或外部命令”

    解决方案: 1 在C:\Windows\System32中检查cmd.exe是否存在(如果存在的话)(检查cmd.exe是否被误删) 2 在我的电脑——属性——环境变量——在系统变量找到Path编辑前 ...

  8. bootstrapTable的数据后端分页排序

    数据后端分页排序,其实就是sql语句中oeder by做一些限制. 之前在写sql语句中的order by是写死,既然要写活,就要传参数到后台. 之前讲到bootstrapTable的queryPar ...

  9. vue封装storage案例

    src/model/storage.js var storage={ set(key,value){ localStorage.setItem(key,JSON.stringify(value)); ...

  10. TAS5508 output changing

    1.如果信号从3th通道输入,正常就是从PWM5,6输出,现在要想从PWM7,8输出,就按照以下红线部分选择DAP CH5和DAP CH6,然后写入相应寄存器产生的12 bytes的数组数据即可.