我在我的asp页面中使用Update Panel,我正在对异步回发进行JQuery验证...
我只想在按钮点击或提交时验证我的表单... 我的问题是..所有我的按钮都有不同的表格视图,不会一次加载...这就是为什么我无法使用按钮ID并使用点击事件...这是我的代码..
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(ValidateMyForm);
function ValidateMyForm(sender, args) {
var objPost = args.get_postBackElement();
if (objPost === null || objPost === undefined) return;
if (objPost.id == '<%= ((Button)(formViewinfo.FindControl("btnUpdate"))).ClientID %>') {
$('#pnlerrors').fadeOut('fast');
$('#pnlItemErrors').fadeOut('fast');
var isValid = $('#form1').validate({
errorClass: 'error',
invalidHandler: function (e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
$('#pnlerrors').html('<p> Please correct the errors </p>').fadeIn('fast');
document.location.href = '#pnlerrors';
}
}, submitHandler: function () {
}
}).form();
if (!isValid) {
CancelPostback(sender, args);
} else {
}
}
//this is for rest of buttons
else {
$('#pnlItemErrors').fadeOut('fast');
$('#pnlerrors').fadeOut('fast');
var isValid = $('#form1').validate({
errorClass: 'error',
invalidHandler: function (e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
$('#pnlerrors').fadeOut('fast');
document.location.replace('#', '#pnlItemErrors');
$('#pnlItemErrors').html('<p> Please correct the errors </p>').fadeIn('fast');
document.location.href = '#pnlItemErrors';
}
}, submitHandler: function () {
}
}).form();
if (!isValid) {
CancelPostback(sender, args);
} else {
}
}
}
我想要做的就是:第二次验证只按钮提交不是为了所有内容...我在这个页面上得到了其他回发,并且每次回复都会得到验证(我想避免这个)...
我不知道这种方法是好还是不长......我很久以来就在苦苦挣扎......我真的很感谢你的帮助......
答案 0 :(得分:1)
如果您的问题只是找到需要进行验证的按钮 解决这个问题的一种方法是在要触发验证的按钮上添加一个类,例如:
<asp:button id="btn1" cssclass="Validate"/>
然后你可以在JQuery中获取所有这些按钮:
var buttons = $('.Validate');
获取每个按钮ID:
$(buttons).each(function(){
var id = this.id;
});
答案 1 :(得分:1)
假设您不想要在有人按下输入按钮和时提交表单,您只想在按下{时提交表单{1}}按钮:
submit
There's a JS Fiddle demo, here: http://jsfiddle.net/davidThomas/5PaWz/
如果我在我的假设中弄错了,请发表评论,我会尽力纠正自己。
答案 2 :(得分:1)
ohh..god终于找到了我的问题的解决方案......首先,如果我的问题不明确,我会道歉......
我的验证适用于异步回发...我只想在按钮点击上验证我的表单..我的页面中有一个asp.net网格视图..如果我点击分页或它触发的网格上的东西验证......我想避免这个......
为此我做的是...我正在使用以下语句捕获回发元素。
var objPost = args.get_postBackElement();
然后我正在检查类型..
if (objpost.type == 'submit') { do validation }
else { don't }..
这结束了我2天的斗争...... 非常感谢你的支持和帮助...
答案 3 :(得分:0)
尝试不同的方法。 使用asp.Net Button和UseSubmitBehavior = true进行提交 并且对于您不希望它们触发验证过程的按钮,使用带有UserSubmitBehavior = false的asp.Net Button。将以下代码添加到表单
function ValidateForm()
{
var errors ="";
if (typeof(Page_ClientValidate) == 'function')
{
if (typeof (Page_ClientValidate) == 'function') { Page_ClientValidate(); }
if (!Page_IsValid)
{
for (i = 0; i < Page_Validators.length; i++) {
var inputControl = document.getElementById(Page_Validators[i].controltovalidate);
if (!Page_Validators[i].isvalid) {
errors = errors + ";" + Page_Validators[i].errormessage;
inputControl.style.border ="solid 2px #FF0000";
}
}
}
return Page_IsValid;
}
return true;
}
$(document).ready(function(){
/*********************************************************************/
///handle form submittion and run validation prior to that
///if a textbox has required field validator, stop form submittion and
/// highlight the text box
/*********************************************************************/
$('#form1').submit(function(){
return ValidateForm();
});