gpt4 book ai didi

jQuery 验证没有形式的元素

转载 作者:太空狗 更新时间:2023-10-29 14:38:34 25 4
gpt4 key购买 nike

<分区>

使用 ASP.Net 网络表单进行验证。

默认情况下,ASP.Net 在根级别添加一个表单。这意味着我们只需要在表单中添加所有控件。

但是我需要定义一小部分需要验证的页面,我使用了 jQuery 验证插件。

HTML

 <html>
<body>
<form method="post" action="AssetDetails.aspx" id="Form1" enctype="multipart/form-
data">
//Other page content goes here. which doesnt require validation

<form class="form-horizontal" id="validation-form" method="get">
<div class="row-fluid">
<div class="widget-header header-color-blue2">
<h5>
Step 1</h5>
</div>
<input type="email" name="ctl00$MainContent$AssetTabs$DefineCriticality$email" id="email" class="span6" />
</div>

</form>
</form>
</body></html>

Javascript

  $(document).ready(function(){
alert($('#validation-form').length); // gives 0, because this form nested under
another form generated by ASP.Net

$('#validation-form').validate({
errorElement: 'span',
errorClass: 'help-inline',
focusInvalid: false,
rules: {
email: {
required: true,
email: true
}},
messages: {
email: {
required: "Please provide a valid email.",
email: "Please provide a valid email."
}},
errorPlacement: function (error, element) {
error.insertAfter(element);
}
});
});

但问题是,我收到错误 this[0] is undefined in jquery validation file。我发现在 DOM 中找不到 #validation-form,因为这个表单在那个愚蠢的 ASP.Net 生成的根(父)元素中。

我们如何处理这个问题?

有没有一种方法可以在没有表单的情况下使用 jQuery 验证插件来验证元素?

编辑:获得了一些变通解决方案:

最后,我使用父表单完成了这项工作,并根据字段名称添加了规则。 ASP.Net webform 再次开始通过以不同方式生成控件名称字段而带来麻烦。

这里是变通代码。

    var validationParams = {
errorElement: 'span',
errorClass: 'help-inline',
focusInvalid: false,
rules: {},
messages: {},

invalidHandler: function (event, validator) {
$('.alert-error', $('.login-form')).show();
},

highlight: function (e) {
$(e).closest('.control-group').removeClass('info').addClass('error');
},

success: function (e) {
$(e).closest('.control-group').removeClass('error').addClass('info');
$(e).remove();
},

errorPlacement: function (error, element) {
error.insertAfter(element);
},

submitHandler: function (form) {
},
invalidHandler: function (form) {
}
};

var emailFieldName = $('#email').attr('name');

validationParams['rules'][emailFieldName] = { required: true };
validationParams['messages'][emailFieldName] = { required: "Email is required" };

$('#Form1').validate(validationParams);

还有其他更好的方法吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com