菜鸟的jquery学习记录 (一) 对form输入框的必填校验

初学者通过项目实践学习jQuery,使用validate插件进行表单必填项和数据格式校验。遇到问题:如何验证不在form元素内的数据。寻求解决方案,期望通过jQuery校验非表单字段,提交非submit方式时使用button click方法。

跟着项目做了一个小功能,自己不会js和jquery,硬着头皮写起了js,后来发现需要对输入框进行数据必填项校验,还有一些数据格式校验等,后来别人看了我写的一大堆js就笑了,告诉我用jquery的插件就可以了,直接拿过来使用就好,于是就自己写了一个简单的校验,

对于jq  validate网络上有很多的资源可以去查,在这里不赘述,闲话少叙,上代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>jquery校验学习 </title>

	<script type="text/javascript" src="../js/lhgdialog/jquery-1.7.1.min.js"></script> 
	<script src="../js/validate/jquery.validate.js" type="text/javascript"></script>
	<script src="../js/validate/messages_cn.js" type="text/javascript"></script>
	<script type="text/javascript">
	$(document).ready(function(){
		$("#username").focus();
		$("#inputForm").validate({
			rules: {
				username: {
					required: true
				},
				password:{
					required: true			
				},
				checkboxs:{
					required:true
				},
				radios:{
					required:true
				},
				selectone:{
					required:true
				}
			},
			messages: {
				username: {
					required: "请输入用户名"
				},
				password: {
					required: "请输入密码"
				},
				checkboxs:{
					required: "请勾选复选框"
				},
				radios:{
					required: "请勾选单选框"
				},
				selectone:{
					required: "请选择下拉框"
				}
			},
	        errorPlacement: function(error, element) {
	        	if(element.is(':radio')||element.is(':checkbox')) {
	        		//var eid = element.attr("name");不知道为啥从网上找到的会有这一行
	        		error.appendTo(element.parent());
	        	}else{
		            //var selector = "[name='" + element.attr("name") + "']";
		        	//error.insertAfter($(selector)); 这两句是原来工程里的代码,我改成了下面这个也没错,
		        	error.insertAfter(element);
	        	}
	        } 
		});
	});

	
	</script>
	<style type="text/css">
	 #forminfo dl dt{width:200px;}
	</style>
</head>
<body>
<div ><input type="button" name="check" value="check" onclick="validate();"></input></div>
<div id = "content">
	<form id="inputForm" action="study.html" method="post">
		<table>
			<tr>
				<td>username:</td>
				<td>
					<input type='text' name='username' id='username'></input>
				</td>
			</tr>
			<tr>
				<td>技能</td>
				<td>
					<input type="checkbox" name="checkboxs" value="checkbox1">1</input>
					<input type="checkbox" name="checkboxs" value="checkbox2">2</input>
					<input type="checkbox" name="checkboxs" value="checkbox3">3</input>
				</td>
			</tr>
			<tr>
				<td>密码</td>
				<td>
					<input type='text' name='password' ></input>
				</td>
			</tr>
			<tr>
				<td>单选框</td>
				<td>
					<input type="radio" name="radios" value="checkbox1">1</input>
					<input type="radio" name="radios" value="checkbox2">2</input>
					<input type="radio" name="radios" value="checkbox3">3</input>
				</td>
			</tr>
			<tr>
				<td>下拉框</td>
				<td>
					<select name="selectone" >
						<option value="">请选择</option><!-- jquery校验的是value为空的时候会有提示,所以没有这一行的话这个select校验永远为真-->
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
					</select>
				
				</td>
			</tr>
			<tr>
				<td>
				<input type="submit" name="submit"></input>
				</td>
				<td></td>
				<td></td>
			</tr>
		</table>
	</form>
</div>
</body>
</html>



新的问题来了,其实我要在页面上通过js拼接一个json串,所以我的拼接数据的项不再form里,拼接好的数据才会在form里,

那我的问题是,如何通过jquery校验非form表单的数据呢,虽然实用性不大,但把问题抛出来,希望有大神看到了,指点一下!万分感谢


update:!

当提交不是通过submit的时候可以尝试  button 的click方法

$("#form").validate();
$("#btn).click(function(){
    if($("#form").valid()){
     $("#form").submit();
 }
});
可以尝试下,

jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对个表单对象,你只需要写行代码就可以轻松实现无数种脚本控制。jQuery formValidator表单插件致力于改善重复编程、考虑浏览器兼容性等情况;你只关心业务逻辑,而无需关心实现过程,只需简单的配置,无需写代码就能实现表单的检验。 jQuery formValidator表单校验插件 4.1.0 升级内容: 新增以下功能: 1、新增换肤功能,包括提示层的样式、输入控件(目前只支持text、password、file、textarea)的样式。initConfig增加theme属性,表示皮肤名,theme的值可取目录theme下的文件夹名。详见电子版帮助文件里的【制作皮肤】 2、formvalidator函数增加属性leftTrim和rightTrim。是否去掉左边或右边的空格,默认值false 3、ajaxValidator的success事件,可以返回字符串,表示错误信息,将显示在提示层上。 4、为initConfig增加属性ajaxForm,用于配置整个表单ajax提交的参数,详见demo7和api帮助 $.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{ dataType : "html", buttons:$("#button"), url: "http://www.51gh.net/chkuser.aspx?act=ok" }}); 5、所有函数的onError和onSuccess支持字符串,也支持函数(参数为当前的值)返回字符串。 6、发布网页版代码生成器,从当前版本开始支持。 解决以下BUG: 1、修正ajaxValidator函数有处条件书写错误的BUG。 2、修正formvalidator函数autoModify属性对password控件不起作用的BUG。 调用步骤: a、在你要校验的表单页面中引入代码生成器的脚本。 b、调用函数。如果已经写了校验代码,请在校验代码注册完成后调用。 $.formValidatorTools.openTools(); 压缩包相关变更 1、所有的帮助、范例制作成了chm电子帮助文件 2、插件相关的文件放个目录里 插件支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、compareva lidator(提供2个对象的比较,目前可以比较字符串和数值型)、ajaxValidator(通过ajax到服务器上做数据校验)、regexValidator(提供可扩展的正则表达式库) 、functionValidator (可使用外部函数来做校验,可以当做过程处理)。插件支持四种提示模式:固定提示层(FixTip)、自动构建提示层(AutoTip)、单个提示层跟随(SingleTip)、弹出提示内容(AlertTip)。插件支持换肤:默认情况下提供4套皮肤,其中包括58网、网易邮箱注册两套皮肤。 本插件于其他校验控件最大的区别有6点: 1、校验功能可以扩展。    对中文、英文、数字、整数、实数、Email地址格式、基于HTTP协议的网址格式、电话号码格式、手机号码格式、货币格式、邮政编码、身份证号码、QQ号码、日期等等这些控制,别的表单校验控件是代码里写死的,而formValidator是通过外部js文件来扩展的,你可以通过写正则表达式和函数来无限的扩展这些功能。 2、实现了校验代码于html代码的完全分离。    你的所有信息都无需配置在校验表单元素上,你只要在js上配置你的信息。使美工(界面)和JavaScript工程师的工作不交织在起 3、你只需写行代码就能完成个表单元素的所有校验。你只需要写行代码就能完成下所有的控制 •支持所有类型客户端控件的校验 •支持jQuery所有的选择器语法,只要控件有唯ID和type属性 •支持函数和正则表达式的扩展。提供扩展库formValidatorReg.js,你可以自由的添加、修改里面的内容。 •支持2种校验模式。第种:文字提示(showword模式);第二种:弹出窗口提示(showalert模式) •支持多个校验组。如果个页面有多个提交按钮,分别做不同得提交,提交前要做不同的校验,所以你得用到校验组的功能。 •支持4种状态的信息提示功能,可以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值