San*_*h S 4 javascript jquery jquery-validate
我有一个带有两个按钮的表单
a)测试 - 点击按钮时调用javascript函数来验证一些凭据.
b)创建 - 单击按钮时,将调用javascript函数来保存表单.@Messages( "playauthenticate.project.create")
我有一个围绕这两个提交按钮的表单标签,没有任何操作.
name,description,accessKey和secretKey是表单中的四个字段.
单击创建按钮,我想执行jquery验证然后提交表单但jquery验证submitHandler没有在javascript函数中调用,并且错误控制台中没有错误.
当我单击创建按钮时,将显示创建警报,然后表单重置,我能够看到URL中输入的所有参数.
$("create").click(function() {
alert("create ");
$('#projectForm').validate( {
rules: {
name: {
minlength: 6,
required: true
},
description: {
required: true,
description: true
},
accessKey: {
minlength: 10,
required: true
},
secretKey: {
minlength: 15,
required: true
}
},
focusCleanup: false,
wrapper: 'div',
errorElement: 'span',
highlight: function(element) {
$(element).parents ('.control-group').removeClass ('success').addClass('error');
},
success: function(element) {
$(element).parents ('.control-group').removeClass ('error').addClass('success');
$(element).parents ('.controls:not(:has(.clean))').find ('div:last').before ('<div class="clean"></div>');
},
errorPlacement: function(error, element) {
error.appendTo(element.parents ('.controls'));
},
submitHandler: function() {
alert("hello");
var name = $('#name').val();
var description = $('#description').val();
var accessKey = $('#accessKey').val();
var secretKey = $('#secretKey').val();
var dataString = 'name='+ name + '&description=' + description + '&accessKey=' + accessKey+ '&secretKey=' + secretKey;
//alert(dataString);
$.ajax({
type: "POST",
url: "/demo/save",
data: dataString,
success: function(data) {
$('#result').html("<h2>demo created successfully!</h2>");
},
error: function(data) {
$("#result").html("<h2>Error!</h2>");
}
})
}
});
});
Run Code Online (Sandbox Code Playgroud)
JSfiddle - http://jsfiddle.net/NJxh5/3/ 谢谢
.validate()是初始化插件的方法.这不是测试表单的方法.测试是自动的.
因此,摆脱click处理程序.点击事件由插件自动捕获.如果表格有效,submitHandler则会触发.
否则,通过将ajax内部放置在submitHandler回调中,您正在正确地执行此操作.
$(document).ready(function () {
$('#projectForm').validate({ // initialize the plugin
// rules & options
submitHandler: function(form) {
// ajax method
}
});
});
Run Code Online (Sandbox Code Playgroud)
工作演示:http: //jsfiddle.net/ACdtX/
有两个不同的按钮和动作:
HTML:
<form id="projectForm">
....
<input type="button" class="button" value="TEST" id="test" />
<input type="button" class="button" value="Create" id="create" />
</form>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$(document).ready(function () {
$('.button').each(function () {
$(this).on('click', function () {
var action;
if ($(this).attr('id') == "test") {
action = 'test.php';
} else {
action = 'create.php';
}
$('#projectForm').submit();
});
});
$('#projectForm').validate({ // initialize the plugin
// rules & options
submitHandler: function(form) {
// ajax method
$.ajax({
url: action, // determined from click handler above
// ajax options
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30728 次 |
| 最近记录: |