欧芹验证文件图像不起作用

时间:2015-12-05 18:36:25

标签: javascript jquery forms validation parsley.js

我在几天内研究了一些方法,使图像验证通过插件欧芹完成,但不起作用。 我已经按照这个例子https://jsfiddle.net/02vjbLrs/16。 除了图像验证之外,它可以工作。 一些帮助?

{!! Form::open(array('url' => 'backend/portfolio', 'id' => 'form', 'name' => 'InserirPortfolio', 'role' => 'form', 'files'=> true, 'class' => 'form-signin', 'data-validate' => 'parsley'))!!}

<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3">
        {!! Form::label('titulo', 'Titulo', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-9 col-lg-9">
        {!! Form::text('titulo', null, [
            'class'                         => 'form-control input-md', 
            'placeholder'                   => 'Titulo', 
            'data-required'                 => 'true',
            'data-required-message'         => 'O campo Titulo é obrigatório',
            'pattern'                       => '^[A-Za-zãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçÇ ]*$',
            'data-pattern-message'          => 'Só se aceita letras',
            'data-minlength'                => '3',
            'data-minlength-message'        => 'O titulo tem de ter 3 caracteres obrigatórios',
            'data-maxlength'                => '20',
            'data-maxlength-message'        => 'O titulo não pode conter mais de 20 caracteres',
            ]) 
         !!}
    </div>
</div>
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3">
        {!! Form::label('ano', 'Ano', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-9 col-lg-9">
        {!! Form::text('ano', null, [
            'class'                         => 'form-control input-md', 
            'placeholder'                   => 'Ano',
            'data-required'                 => 'true',
            'data-required-message'         => 'O campo Ano é obrigatório',                                     
            'pattern'                       => '^[0-9]{4}$',
            'pattern-message'               => 'Só se aceita números',
        ]) !!}
    </div>
</div>                          
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3">
        {!! Form::label('genero', 'Categoria', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-9 col-lg-9">
        {!! Form::select('genero', ['Design' => 'Design', 'Web Design' => 'Web Design', 'Audiovisual' => 'Audiovisual', 'Branding' => 'Branding'], null, [
            'class'                         => 'form-control input-md',
            'data-required'                 => 'true',
            'data-required-message'         => 'O campo Categoria é obrigatório',                                       
        ]) !!}
    </div>
</div>
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3">
        {!! Form::label('descricao', 'Descrição', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-9 col-lg-9">
        {!! Form::textarea('descricao', null, [
            'class'                         => 'form-control input-md', 
            'style'                         => 'height: 100px; resize: none;', 
            'placeholder'                   => 'Descrição',
            'data-required'                 => 'true',
            'data-required-message'         => 'O campo Descrição é obrigatório',                                           
            'pattern'                       => '^[0-9A-Za-zãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçÇ. ]*$',
            'data-pattern-message'          => 'Está algo errado',
            'data-minlength'                => '10',
            'data-minlength-message'        => 'A descrição tem de ter 10 caracteres obrigatórios',
            'data-maxlength'                => '200',
            'data-maxlength-message'        => 'A descrição não pode conter mais de 200 caracteres',                                        

        ]) !!}
    </div>
</div>                          
<div class="row" style="margin-bottom: 20px;">
    <div class="col-md-3 col-lg-3">
        {!! Form::label('imagens', 'Imagem', ['class' => 'label_perfil']) !!}
    </div>
    <div class="col-md-9 col-lg-9">
        {!! Form::file('imagens[]',[
            'class'     =>      'input-file',
            'multiple' => true,
            'required' => 'required',
            'data-parsley-filemaxmegabytes' => '2',
            'data-parsley-trigger' => 'change',
            'data-parsley-filemimetypes' => 'image/jpeg, image/png'
        ]) !!}
    </div>
</div>   


</div>
  <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
    {!! Form::submit('Acrescentar portfolio', ['class' => 'btn btn-primary']) !!}
  </div>
{!! Form::close() !!}

<script type="text/javascript">
    var app = app || {};

    // Utils
    (function ($, app) {
        'use strict';

        app.utils = {};

        app.utils.formDataSuppoerted = (function () {
            return !!('FormData' in window);
        }());

    }(jQuery, app));

    // Parsley validators
    (function ($, app) {
        'use strict';

        window.Parsley
            .addValidator('filemaxmegabytes', {
                requirementType: 'string',
                validateString: function (value, requirement, parsleyInstance) {

                    if (!app.utils.formDataSuppoerted) {
                        return true;
                    }

                    var file = parsleyInstance.$element[0].files;
                    var maxBytes = requirement * 1048576;

                    if (file.length == 0) {
                        return true;
                    }

                    return file.length === 1 && file[0].size <= maxBytes;

                },
                messages: {
                    en: 'File is to big'
                }
            })
            .addValidator('filemimetypes', {
                requirementType: 'string',
                validateString: function (value, requirement, parsleyInstance) {

                    if (!app.utils.formDataSuppoerted) {
                        return true;
                    }

                    var file = parsleyInstance.$element[0].files;

                    if (file.length == 0) {
                        return true;
                    }

                    var allowedMimeTypes = requirement.replace(/\s/g, "").split(',');
                    return allowedMimeTypes.indexOf(file[0].type) !== -1;

                },
                messages: {
                    en: 'File mime type not allowed'
                }
            });

    }(jQuery, app));


    // Parsley Init
    (function ($, app) {
        'use strict';

        $('#form').parsley();

    }(jQuery, app));

</script>

1 个答案:

答案 0 :(得分:0)

这个问题的一部分可能是w / jsfiddle。我将你的欧芹javascript更改为rc4,并添加了方法=&#39; post&#39;对你的小提琴,得到了与前几天的欧芹问题相同的反应......

Parsley form will not validate

我最终将它放在codepen上,并且能够在其上工作/修复它......

我会把它作为评论,但我没有分数......