4
回答
jquery validate form 不提交
开发十年,就只剩下这套Java开发体系了   
$('#agreenBtn').click(function(){
		$('form#agreefm').validate({
			rules : {
				money:{
					required : true,
					number:true,
					range:[0,1000]
				}
			},
			messages : {
				money:{
					required : '请填写赔偿金额.',
					number:'只接受数字.',
					range:'范围0~1000.'
				}
			},
		errorElement: 'span',
		errorClass: 'validate-has-error',
		highlight: function (element) {
				$(element).closest('.form-group').addClass('validate-has-error');
			},
		unhighlight: function (element) {
			$(element).closest('.form-group').removeClass('validate-has-error');
		},
		errorPlacement: function (error, element)
		{
			if(element.closest('.has-switch').length){
				error.insertAfter(element.closest('.has-switch'));
			}else
			if(element.parent('.checkbox, .radio').length || element.parent('.input-group').length){
				error.insertAfter(element.parent());
			}else 
			{
				error.insertAfter(element);
			}
		},
		submitHandler : function(form) {
			toastr.success('进入表单提交...');	
			$.post($(form).attr('action'),$(form).serialize(),function(data){
				if(data.flag){
					$('#comagree').modal('hide');
					toastr.success('操作成功.');	
					$('#quer .btn-success').click();
				}else{
					toastr.error(data.msg);	
				}
			},"json");
	
		}
	});

});

上面是Js源码。

正常流程:点击表单提交按钮 触发事件。验证表单。如果为空或者超过超限就给出提示。否则就提交表单。然后根据后台返回的结果进行提示。

--------------华丽的切割线-----------------------

现在问题来了

1.当点提交按钮时。并不会。马上就进行校验。

就是表单什么都不输入。直接点提交按钮。界面。不会有任何错误提示。随便怎么点。就是不弹错误提示。

只有当我把光标定位到输入框,输入一些违反校验规则的内容。才会有错误提示出来。比如 只能为数字,范围超出等提示。

2.在输入框输入数字内容以后。且在允许范围内。点提交按钮。没有触发submitHandler方法。

很是奇怪。做死的点。也不会进这个方法、

-------以上俩个问题。很是纠结。---- 求 大神。解救。。-----








举报
壹爱
发帖于3年前 4回/3K+阅

引用来自“jeffsui”的评论

通常valiation是对控件注册事件,也就是你所说的光标获取 焦点的时候,才会被触发。而你却把validation注册到了提交按钮?我觉得问题就在这里。


同意,.validate()方法不能写在click事件中,只需在页面加载的时候调用一次就行了。


你的click事件只需调用form的submit方法就行了。


因为validate是拦截form的submit事件的。

通常valiation是对控件注册事件,也就是你所说的光标获取 焦点的时候,才会被触发。而你却把validation注册到了提交按钮?我觉得问题就在这里。


引用来自“jeffsui”的评论

通常valiation是对控件注册事件,也就是你所说的光标获取 焦点的时候,才会被触发。而你却把validation注册到了提交按钮?我觉得问题就在这里。


引用来自“jarchan”的评论

同意,.validate()方法不能写在click事件中,只需在页面加载的时候调用一次就行了。


你的click事件只需调用form的submit方法就行了。


因为validate是拦截form的submit事件的。
谢了。试了一下。果真是这样的。
$.validator.setDefaults({
		ignore: ':hidden',
  });	
	$("#reg").validate({
		onkeyup:false,
	
		submitHandler : function (form) {
			$(form).ajaxSubmit({
				
				url : '../php/add.php',
				type:'POST',
				dataType: "json",
				data:param,
				beforeSubmit : function(formDate,jqForm,option){
					$('#loading').dialog('open');
				},
				success : function (responseText, statusText) {
					
					if (responseText) {		
						alert(responseText);				
						$('#loading').css('background', 'url(../photo/success.gif) no-repeat 20px center').html('数据新增成功...');
						$.cookie('user', $('#user').val());
						setTimeout(function () {
							$('#loading').dialog('close');				      
							$('#reg').resetForm();
							$('#reg span.star').html('*').removeClass('succ');
							$('#loading').css('background', 'url(../photo/loading.gif) no-repeat 20px center').html('数据交互中...');
                             $(window).attr('location','homepage.html'); 
							$('#member,#logout').show();
							$('#reg_a,#login_a').hide();
							$('#member').html($.cookie('user'));
						}, 1000);
					}
					
				},
			})	
			form.submit();	
		},
		highlight : function (element, errorClass) {
			$(element).css('border', '1px solid #630');
			$(element).parent().find('span').html('*').removeClass('succ');
		},
		
		unhighlight : function (element, errorClass) {
			$(element).css('border', '1px solid #ccc');
			$(element).parent().find('span').html(' ').addClass('succ');
		},
	
	 rules : {
		user : {
			required : true,
			minlength : 2,
			remote : {
				url : '../cinema/php/is_user.php',
				type : 'POST',
			},
		},
		pass : {
			required : true,
			minlength : 6,
		},
		confirm_password: {
			required: true,
			minlength: 6,
			equalTo: '#pass',
		},
		email : {
			required : true,
			email : true
		},
		date : {
			date : true,
		},
	},
	messages : {
		user : {
			required : '帐号不得为空!',			
			minlength : $.validator.format('帐号不得小于{0}位!'),
			remote : '帐号被占用!',
		},
		
		pass : {
			required : '密码不得为空!',
			minlength : $.validator.format('密码不得小于{0}位!'),
		},
		confirm_password: {
			required: "请输入密码",
			minlength:$.validator.format("密码长度不能小于 6 个字母"),
			equalTo: '两次密码不一致!',
		},
		email : {
			required : '邮箱不得为空!',
			minlength : $.validator.format('请输正确的邮箱!'),
		},	
		email: "请输入一个正确的邮箱",

	}
	
	});
	

我的表单用的是submit按钮 请问为什么没有反应呢  但是可以验证

顶部