jQuery验证元素没有形式

前端之家收集整理的这篇文章主要介绍了jQuery验证元素没有形式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用ASP.Net webforms进行验证.

默认情况下,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);
     }
    });
    });

但问题是,我收到错误这个[0]在jquery验证文件中是未定义的.我发现在DOM中找不到#validation-form,因为这个表单位于那个愚蠢的ASP.Net生成的根(父)元素中.

我们该如何处理?

有没有一种方法我们使用jQuery验证插件验证元素与表单?

编辑:得到一些解决方法

最后,我使用父表单进行了此工作,并根据字段名称添加规则. ASP.Net webform再一次通过不同方式生成控件名字段来开始给出麻烦.

这是围绕代码的工作.

var validationParams = {
        errorElement: 'span',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();
        },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);

有没有其他更好的方法呢?

解决方法

我没有告诉你其他选项,但你问的是,你是否可以使用没有表单的验证插件.

您绝对需要< form>< / form> jQuery Validate插件标签可以正常运行,或者根本没有.

如果你使用ajax,你必须[把你的ajax放在jQuery Validate插件的submitHandler中

您可以删除或阻止该操作,仍然使用jQuery Validate.

您可以在submitHandler中放置ajax和return false,并且不会定期提交:

$(document).ready(function() {

    $('#myform').validate({ // initialize plugin
        // your rules & options,submitHandler: function(form) {
            // your ajax would go here
            return false;  // blocks regular submit since you have ajax
        }
    });

});

见demo:http://jsfiddle.net/NEPsc/5/

猜你在找的jQuery相关文章