首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery验证-连接多个表单的变量

jQuery验证-连接多个表单的变量
EN

Stack Overflow用户
提问于 2017-04-11 08:19:06
回答 2查看 403关注 0票数 3

我尝试对具有不同名称(相同数量的字段)的多个表单进行验证,但我无法连接变量。请参阅下面的表格:

代码语言:javascript
复制
<form method="post" id="form_validate344" class="form_validate" data-id="344" novalidate="novalidate">
    <div class="col-sm-12">
        <input type="text" class="form-control" value="" name="email-form-nombre344" id="email-form-nombre344" placeholder="NOMBRE COMPLETO*">
    </div>
    <div class="col-sm-6">
        <input type="text" class="form-control" value="" name="email-form-email344" id="email-form-email344" placeholder="EMAIL*">
    </div>
    <div class="col-sm-6">
        <input type="text" class="form-control" value="" name="email-form-telefono344" id="email-form-telefono344" placeholder="TELÉFONO*">
    </div>
    <div class="col-sm-8">
        <input type="text" class="form-control" value="" name="email-form-empresa344" id="email-form-empresa344" placeholder="EMPRESA">
    </div>
    <div class="col-sm-4">
        <input type="text" class="form-control" value="" name="email-form-edad344" id="email-form-edad344" placeholder="EDAD*">
    </div>
    <div class="col-sm-8">
        <input type="text" class="form-control" value="" name="email-form-puesto344" id="email-form-puesto344" placeholder="PUESTO*">
        <input type="hidden" value="344" name="post_id">
    </div>
    <div class="col-sm-4">
        <select name="email-form-sede344" class="form-control" id="email-form-sede344">
                      <option value="">SEDE*</option><option value="Monterrey">Monterrey</option></select>
    </div>
    <div class="col-sm-4 col-sm-offset-4">
        <input type="submit" class="form-control btn submit" name="enviar344" value="ENVIAR">

    </div>

</form>

正如你所看到的,每个输入都有一个以数字结尾的名称(在本例中是344),这是在php代码中生成的,以区分其他表单,下面是我要验证的javascrip:

代码语言:javascript
复制
$('form.form_validate').each(function () {


      $( this ).validate( {

      rules:  {"email-form-nombre344" : "required", },


      messages: {
       test: "Por favor entra tu usuario",
       "email-form-email344" : "Por favor entra un email válido",
       "email-form-telefono344" : "Por favor entra un número de telefono válido",
       "email-form-empresa344" : "Por favor entra tu empresa",
       "email-form-edad344" : "Por favor entra un número de edad válido",
       "email-form-puesto344" : "Por favor entra tu puesto",
       "email-form-sede344" : "Por elige una sede",
      },
      errorElement: "em",
      errorPlacement: function ( error, element ) {
       // Add the `help-block` class to the error element
       error.addClass( "help-block" );

       // Add `has-feedback` class to the parent div.form-group
       // in order to add icons to inputs
       //element.parents( ".jv" ).addClass( "has-feedback" );

       if ( element.prop( "type" ) === "checkbox" ) {
         error.insertAfter( element.parent( "label" ) );
       } else {
         error.insertAfter( element );
       }

       // Add the span element, if doesnt exists, and apply the icon classes to it.
       if ( !element.next( "span" )[ 0 ] ) {
         $( "<span class=\"glyphicon glyphicon-remove form-control-feedback\"></span>" ).insertAfter( element );
       }
      },
      success: function ( label, element ) {
       // Add the span element, if doesnt exists, and apply the icon classes to it.
       if ( !$( element ).next( "span" )[ 0 ] ) {
         $( "<span class=\"glyphicon glyphicon-ok form-control-feedback\"></span>" ).insertAfter( $( element ) );
       }
      },
      highlight: function ( element, errorClass, validClass ) {
       $( element ).parents( ".jv" ).addClass( "has-error" ).removeClass( "has-success" );
       $( element ).next( "span" ).addClass( "glyphicon-remove" ).removeClass( "glyphicon-ok" );
      },
      unhighlight: function ( element, errorClass, validClass ) {
       $( element ).parents( ".jv" ).addClass( "has-success" ).removeClass( "has-error" );
       $( element ).next( "span" ).addClass( "glyphicon-ok" ).removeClass( "glyphicon-remove" );
      }
      });
    });

它可以工作,但只会验证以344结尾的表单,我想验证每个表单。此外,我还使用它来连接变量:

代码语言:javascript
复制
var nombre = "344";

var myObj = {};

myObj["email-form-nombre" + nombre] = {
  'required': "true"
};
.
.
.
rules: {
  myObj
},

但是什么都不起作用。如何做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2020-09-16 15:00:00

如果您有许多表单具有不同的表单名称(相同数量的字段),那么为什么要动态命名输入名称。对于所有表单,您可以具有类似的输入名称,例如: id = "form_validate344“的表单可以具有以下输入

代码语言:javascript
复制
<input type="text" class="form-control" value="" name="email-form-nombre" id="email-form-nombre344" placeholder="NOMBRE COMPLETO*">

id = "form_validate345“的表单可以有以下输入

代码语言:javascript
复制
<input type="text" class="form-control" value="" name="email-form-nombre" id="email-form-nombre345" placeholder="NOMBRE COMPLETO*">

在上述两种情况下,输入名称都是相似的,并且输入id的唯一差异是相同的,适用于所有其他输入

因此,在js代码中,不需要在in后面加上表单名称。

您的最终代码将类似于:

HTML

代码语言:javascript
复制
<form method="post" id="form_validate344" class="form_validate" data-id="344" novalidate="novalidate">

    <div class="col-sm-12">
        <input type="text" class="form-control" value="" name="email-form-nombre" id="email-form-nombre344" placeholder="NOMBRE COMPLETO*">
    </div>
    <div class="col-sm-6">
        <input type="text" class="form-control" value="" name="email-form-email" id="email-form-email344" placeholder="EMAIL*">
    </div>
    <div class="col-sm-6">
        <input type="text" class="form-control" value="" name="email-form-telefono" id="email-form-telefono344" placeholder="TELÉFONO*">
    </div>
    <div class="col-sm-8">
        <input type="text" class="form-control" value="" name="email-form-empresa" id="email-form-empresa344" placeholder="EMPRESA">
    </div>
    <div class="col-sm-4">
        <input type="text" class="form-control" value="" name="email-form-edad" id="email-form-edad344" placeholder="EDAD*">
    </div>
    <div class="col-sm-8">
        <input type="text" class="form-control" value="" name="email-form-puesto" id="email-form-puesto344" placeholder="PUESTO*">
        <input type="hidden" value="344" name="post_id">
    </div>
    <div class="col-sm-4">
        <select name="email-form-sede" class="form-control" id="email-form-sede344">
                      <option value="">SEDE*</option><option value="Monterrey">Monterrey</option></select>
    </div>
    <div class="col-sm-4 col-sm-offset-4">
        <input type="submit" class="form-control btn submit" name="enviar344" value="ENVIAR">

    </div>

</form>

JS

代码语言:javascript
复制
$('.form_validate').each(function () {

$(this).validate( {
//HERE I HAVE REMOVED 344 (form ids) 
rules:  {"email-form-nombre" : "required", },

//HERE I HAVE REMOVED 344 (form ids) 
messages: {
 test: "Por favor entra tu usuario",
 "email-form-email" : "Por favor entra un email válido",
 "email-form-telefono" : "Por favor entra un número de telefono válido",
 "email-form-empresa" : "Por favor entra tu empresa",
 "email-form-edad" : "Por favor entra un número de edad válido",
 "email-form-puesto" : "Por favor entra tu puesto",
 "email-form-sede" : "Por elige una sede",
},
errorElement: "em",
errorPlacement: function ( error, element ) {
 // Add the `help-block` class to the error element
 error.addClass( "help-block" );

 // Add `has-feedback` class to the parent div.form-group
 // in order to add icons to inputs
 //element.parents( ".jv" ).addClass( "has-feedback" );

 if ( element.prop( "type" ) === "checkbox" ) {
   error.insertAfter( element.parent( "label" ) );
 } else {
   error.insertAfter( element );
 }

 // Add the span element, if doesnt exists, and apply the icon classes to it.
 if ( !element.next( "span" )[ 0 ] ) {
   $( "<span class=\"glyphicon glyphicon-remove form-control-feedback\"></span>" ).insertAfter( element );
 }
},
success: function ( label, element ) {
 // Add the span element, if doesnt exists, and apply the icon classes to it.
 if ( !$( element ).next( "span" )[ 0 ] ) {
   $( "<span class=\"glyphicon glyphicon-ok form-control-feedback\"></span>" ).insertAfter( $( element ) );
 }
},
highlight: function ( element, errorClass, validClass ) {
 $( element ).parents( ".jv" ).addClass( "has-error" ).removeClass( "has-success" );
 $( element ).next( "span" ).addClass( "glyphicon-remove" ).removeClass( "glyphicon-ok" );
},
unhighlight: function ( element, errorClass, validClass ) {
 $( element ).parents( ".jv" ).addClass( "has-success" ).removeClass( "has-error" );
 $( element ).next( "span" ).addClass( "glyphicon-ok" ).removeClass( "glyphicon-remove" );
}
});
});
票数 1
EN

Stack Overflow用户

发布于 2020-09-21 03:07:55

您可以相应地更改您的JS代码:

代码语言:javascript
复制
$('form[id^="form_validate").each(function () {
     let thisID = $( this ).attr('id').replace('form_validate','');

      $( this ).validate( {

      rules:  {"email-form-nombre"+thisID : "required", },


      messages: {
       test: "Por favor entra tu usuario",
       "email-form-email"+thisID : "Por favor entra un email válido",
       "email-form-telefono"+thisID : "Por favor entra un número de telefono válido",
       "email-form-empresa"+thisID : "Por favor entra tu empresa",
       "email-form-edad"+thisID : "Por favor entra un número de edad válido",
       "email-form-puesto"+thisID : "Por favor entra tu puesto",
       "email-form-sede"+thisID : "Por elige una sede",
      },
      errorElement: "em",
      errorPlacement: function ( error, element ) {
       // Add the `help-block` class to the error element
       error.addClass( "help-block" );

       // Add `has-feedback` class to the parent div.form-group
       // in order to add icons to inputs
       //element.parents( ".jv" ).addClass( "has-feedback" );

       if ( element.prop( "type" ) === "checkbox" ) {
         error.insertAfter( element.parent( "label" ) );
       } else {
         error.insertAfter( element );
       }

       // Add the span element, if doesnt exists, and apply the icon classes to it.
       if ( !element.next( "span" )[ 0 ] ) {
         $( "<span class=\"glyphicon glyphicon-remove form-control-feedback\"></span>" ).insertAfter( element );
       }
      },
      success: function ( label, element ) {
       // Add the span element, if doesnt exists, and apply the icon classes to it.
       if ( !$( element ).next( "span" )[ 0 ] ) {
         $( "<span class=\"glyphicon glyphicon-ok form-control-feedback\"></span>" ).insertAfter( $( element ) );
       }
      },
      highlight: function ( element, errorClass, validClass ) {
       $( element ).parents( ".jv" ).addClass( "has-error" ).removeClass( "has-success" );
       $( element ).next( "span" ).addClass( "glyphicon-remove" ).removeClass( "glyphicon-ok" );
      },
      unhighlight: function ( element, errorClass, validClass ) {
       $( element ).parents( ".jv" ).addClass( "has-success" ).removeClass( "has-error" );
       $( element ).next( "span" ).addClass( "glyphicon-ok" ).removeClass( "glyphicon-remove" );
      }
      });
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43334800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档