繁体   English   中英

基于输入类型的 jQuery 验证 = radio/checkbox/select

[英]jQuery Validation based on input type = radio/checkbox/select

这是我的代码

$('.f1 .btn-next').on('click', function() {
    var parent_fieldset = $(this).parents('fieldset');
    var next_step = true;
    // navigation steps / progress steps
    var current_active_step = $(this).parents('.f1').find('.f1-step.active');
    var progress_line = $(this).parents('.f1').find('.f1-progress-line');

    // fields validation
    parent_fieldset.find('input[type="text"], select').each(function() {
         if( $(this).val() == "" ) {
            $(this).addClass('input-error');
            next_step = false;
        }
        else {
            $(this).removeClass('input-error');
        }
    });
    // fields validation

它是我在多步表单中使用的一种验证,这里输入文本字段验证工作正常,但对于 Select/Checkbox/Radio,它不起作用,请帮我修复代码。

我已经尝试过此代码,但它不适用于选择字段 -

parent_fieldset.find('input[type="text"], select', '.sys').each(function() {

试试下面的代码。

  parent_fieldset.find(':input').each(function() {
      //Your code goes here.
     }
//Try this one another way to validate form fields

     var allFormData = $('#myForm').serializeArray();
       for(var dataIndex = 0 ; dataIndex < allFormData.length ; dataIndex++){
         if(allFormData[dataIndex].value == ""){
          $("#myForm input[name="+allFormData[dataIndex].name+"]").addClass("input-error");
         }else{
            $("#myForm input[name="+allFormData[dataIndex].name+"]").removeClass('input-error');
         }
       }

你是说你只想要类型为文本的输入,所以这就是你得到的。 如果您想要每种类型的输入,只需将类型规范从选择器中移除,如下所示:

parent_fieldset.find(':input').each(function() {

}

编辑:jQuery :input扩展将包含选择元素,而input不会。 jQuery 文档在这里

所以这是我的最终代码,它与所有选择、单选、复选框字段完美配合

parent_fieldset.find('input[type="text"], select', '.sys').each(function(key, value) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM