如果某些复选框被选中,jquery 验证表单输入

标签 jquery checkbox validation

我有一个多部分表单,它在开始时获取基本用户信息,并进行一些 jquery.validate 错误检查,以查看字段是否已填写以及电子邮件地址是否有效。

下面有一系列用于新帐户、删除帐户、新软件等的复选框(type_of_request),它们在选中/取消选中时显示/隐藏这些表单元素。

仅当相应的 type_of_request 项目已被选中时,我才想验证表单上的必填部分。

<小时/>

更新信息

<小时/>

这是一个很好的解决方案,但似乎需要所选部分的所有子项。

典型的场景是 type_request 中的电子邮件和其他复选框均被选中:

   <div id="email" style="display: block;"> // shown because other has been selected in the type request
     <input id="email_new_account" class="sq-form-field" type="checkbox" value="0" name="q4836:q1"/> // not required
     <input id="email_new_account_name" class="sq-form-field" type="text" name="q4836:q2"/> // if email_new_account checked then make required
     <input id="email_new_account_access" class="sq-form-field" type="text" name="q4836:q2"/> // if email_new_account checked then make required
     <input id="email_new_account_manager" class="sq-form-field" type="text" name="q4836:q3"/> // if email_new_account checked then make required

     <input id="email_add_remove_access" class="sq-form-field" type="checkbox" value="0" name="q4837:q1"/> // not required
     <input id="email_add_remove_account_name" class="sq-form-field" type="text" name="q4837:q2"/> // if email_add_remove_access checked then make required
     <input id="email_add_access" class="sq-form-field" type="text" name="q4836:q2"/> // if email_add_remove_access checked then make required
     <input id="email_remove_access" class="sq-form-field" type="text" name="q4837:q3"/> // if email_add_remove_access checked then make required
   </div>
   <div id="other" style="display: block;"> // shown because other has been selected in the type request
     <input id="other_describe_request" class="sq-form-field" type="text" name="q4838:q1"/> // required because #other was checked in type request
     <input id="other_request_justification" class="sq-form-field" type="text" name="q48387:q2"/> // required because #other was checked in type request
   </div>
<小时/>

进一步阅读

<小时/>

我进一步审查了这一点,发现可以将以下内容添加到输入项的类中

class="{required:true, messages:{required:'Please enter 
your email address'}}"

class="{required:true, email:true, messages:{required:'Please enter 
your email address', email:'Please enter a valid email address'}}"

但是当我添加

class="{required:'input[@name=other]:checked'}" 

http://jquery.bassistance.de 上对此进行了描述网站,它不起作用。我需要更改语法才能使其正常工作吗?

最佳答案

假设您正在使用 jQuery validation plugin ,您可以根据单击的复选框设置/清除必需/非必需部分中每个控件的类。

$(document).ready( function() { $('form').validate(); } );

function init_validation(divName)
{
    $('div#' + divName).find('input').addClass( 'required' );
    $('div#inputs').children('div:not(#' + divName + ')')
                  .find('input')
                  .removeClass( 'required' );
}

HTML:

<form>
<div>
  <input type='radio'
         id='new_account_radio'
         name='interface_selector'
         value='new_account'
         selected=true
         onclick='init_validation("new_account");' /> New Account

  <input type='radio'
         id='delete_account_radio'
         name='interface_selector'
         value='delete_account'
         onclick='init_validation("delete_account");' /> Delete Account

  <input type='radio'
         id='new_software_radio'
         name='interface_selector'
         value='new_software'
         onclick='init_validation("new_software");' /> New Software

</div>

<div id='inputs'>
   <div id='new_account'>
       <input type='text' id='new_account_name' class='required' />
   </div>

   <div id='delete_account'>
       <input type='text' id='delete_account_name' />
   </div>

   <div id='new_software'>
       <input type='text' id='new_software_name' />
   </div>
</div>
</form>

关于如果某些复选框被选中,jquery 验证表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297555/

相关文章:

jquery - 使用 jquery 和 regex 检查序列号

vue.js - Vue : binding with v-model in custom checkbox component doesn't work

javascript - 我应该如何使用 angularjs 取消选择 html 页面中已选择的复选框?

android - 如果选中一个特定的复选框,则执行某些操作,如果单击任何其他复选框,则执行其他操作

c# - 使用.NET时验证多行文本输入

javascript - div悬停上的jquery多个文本滚动不起作用

javascript - 将 div 设置为可用空间的其余部分

php - Laravel 5 验证唯一(数据库)仅适用于相同的外键

表行的 Javascript 比较以红色突出显示行 (CakePHP)

javascript - 如何创建通用的 jquery 验证和重置函数调用