Установить проверку формы jquery в зависимости от типа ввода, если несколько входов имеют одинаковое имя - PullRequest
0 голосов
/ 28 июня 2019

У меня есть таблица admin_config, которая выглядит так: -

enter image description here

Пока я создаю форму в Laravel, я делаю это так: -

{{ Form::open(array(
                  'method' => 'POST',
                  'class' => 'form-horizontal form-label-left',
                  'route' =>  ['edit_settings'],
                  'id' => 'editSettingsForm',
                  'files' => true,
                  'novalidate' => true)) }}

<div class="col-md-12 col-sm-12 col-xs-12">
  @foreach($configList as $key => $cl)
  <div class="item form-group">
    @php
    $caption = $cl['config_key'];
    $caption = str_replace('_', ' ', $caption);
    @endphp
    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="config_key">@if($caption == 'emails'){{ 'Admin ' . ucfirst($caption) }}@else{{ ucfirst($caption) }}@endif <span class="required">*</span>
    </label>
    <div class="col-md-9 col-sm-9 col-xs-12">
      {{ Form::hidden('config_key[]', $cl['config_key'], array(
                              'id' => 'config_key_' . $key,
                              'class' => 'form-control col-md-7 col-xs-12',
                              'data-validate-length-range' => '3,50',
                              'placeholder' => 'Config Key',
                              'required' => 'required' )) }}
      @if($cl['value_unit'] == 'date')
      {{ Form::select('config_value[]', 
                      array(
                        'd-m-Y' => 'd-m-Y',
                        'd/m/Y' => 'd/m/Y',
                        'd.m.Y' => 'd.m.Y',
                        'Y-m-d' => 'Y-m-d',
                        'Y/m/d' => 'Y/m/d',
                        'Y.m.d' => 'Y.m.d',
                        'm-d-Y' => 'm-d-Y',
                        'm/d/Y' => 'm/d/Y',
                        'm-d-Y' => 'm.d.Y'
                      ), 
                      $cl['config_value'], 
                      array(
                        'class' => 'form-control col-md-7 col-xs-12', 
                        'id'    => 'config_value_' . $key
                      )) }}
      @elseif($cl['value_unit'] == 'time')  
      {{ Form::select('config_value[]', 
                      array(
                        'H:i:s'   => 'H:i:s',
                        'H.i.s'   => 'H.i.s',

                        'H:i'     => 'H:i',
                        'H.i'     => 'H.i',

                        'h:i:s A' => 'h:i:s A',
                        'h.i.s A' => 'h.i.s A',
                        'h:i:s a' => 'h:i:s a',
                        'h.i.s a' => 'h.i.s a',

                        'h:i A'   => 'h:i A',
                        'h.i A'   => 'h.i A',
                        'h:i a'   => 'h:i a',
                        'h.i a'   => 'h.i a'
                      ), 
                      $cl['config_value'], 
                      array(
                        'class' => 'form-control col-md-7 col-xs-12', 
                        'id'    => 'config_value_' . $key
                      )) }}
      @elseif($cl['value_unit'] == 'url')  
      {{ Form::url('config_value[]', $cl['config_value'], array(
                              'id' => 'config_value_' . $key,
                              'class' => 'form-control col-md-7 col-xs-12',
                              'data-validate-length-range' => '3,50',
                              'placeholder' => 'Config value',
                              'required' => 'required' )) }}
      @else                      
      {{ Form::text('config_value[]', $cl['config_value'], array(
                              'id' => 'config_value_' . $key,
                              'class' => 'form-control col-md-7 col-xs-12',
                              'data-validate-length-range' => '3,50',
                              'placeholder' => 'Config value',
                              'required' => 'required' )) }}
      @endif
    </div>
  </div>
  @endforeach
  <div class="ln_solid"></div>
  <div class="form-group">
    <div class="col-md-6 col-md-offset-3">
      <a class="btn btn-primary back_new" href="{{url('/cpanel/dashboard/')}}">Back</a>
      <button id="send" type="submit" class="btn btn-success submit_new">Submit</button>
    </div>
  </div>
</div>

<div style="clear:both;"></div>
{{ Form::close() }}

Форма HTML выглядит следующим образом: -

enter image description here

Мне нужна проверка формы jquery для формы. Текущая проверка формы выглядит следующим образом: -

$(document).ready(function(){
    $("#editSettingsForm").validate({
        ignore: [],
        rules: {
            'config_value[]': {
                required: true
            }
        },
        messages: {
            'config_value[]': {
                required: "Please enter value"
            }
        }
    });
});

Я хочу проверить дополнительную проверку, например, если тип ввода указан в URL, тогда у него будет специальное правило проверки URL и сообщение.

Как я могу это сделать?

Edit:

  1. Несколько элементов ввода имеют одинаковое имя, т.е. config_value [].
  2. Один элемент с именем = config_value [] может иметь тип = 'текст', в то время как другой элемент с именем = config_value [] может иметь тип = 'url.'.
  3. У того, у кого type = 'url', должно быть правило проверки URL, тогда как у с type = 'text', не должно иметь правило проверки URL

1 Ответ

0 голосов
/ 28 июня 2019

Здравствуйте. Пожалуйста, попробуйте эту надежду, что это решит вашу проблему для проверки URL

$( "#myform" ).validate( {
  // This global normalizer will trim the value of all elements
  // before validatng them.
  normalizer: function( value ) {
    return $.trim( value );
  },
  rules: {
    username: {
      required: true
    },
    url_input: {
      required: true,
      url: true,

      // We don't need to trim the value of this element, so we overrided
      // the global normalizer in order to append 'http://' to the url value
      // if doesn't already.
      normalizer: function( value ) {
        var url = value;

        // Check if it doesn't start with http:// or https:// or ftp://
        if ( url && url.substr( 0, 7 ) !== "http://"
            && url.substr( 0, 8 ) !== "https://"
            && url.substr( 0, 6 ) !== "ftp://" ) {
          // then prefix with http://
          url = "http://" + url;
        }

        // Return the new url
        return url;
      }
    }
  }
} );

Или вы можете использовать это также

$( "#myform" ).validate({
  rules: {
    field: {
      required: true,
      url: true
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...