Javascript 欧芹验证文件图像不';行不通
我有几天要研究一些方法,使图像验证是通过一个欧芹插件完成的,但不起作用。 我已仿效这个例子。 除了图像验证,它什么都能用。 要帮忙吗Javascript 欧芹验证文件图像不';行不通,javascript,jquery,forms,validation,parsley.js,Javascript,Jquery,Forms,Validation,Parsley.js,我有几天要研究一些方法,使图像验证是通过一个欧芹插件完成的,但不起作用。 我已仿效这个例子。 除了图像验证,它什么都能用。 要帮忙吗 {!! Form::open(array('url' => 'backend/portfolio', 'id' => 'form', 'name' => 'InserirPortfolio', 'role' => 'form', 'files'=> true, 'class' => 'form-signin', 'data-va
{!! 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>
{!!Form::open(数组('url'=>'后端/公文包','id'=>'表单','name'=>'插入文件组合','role'=>'表单','files'=>true,'class'=>'表单签名','data validate'=>'欧芹'))
{!!Form::label('titulo','titulo',['class'=>'label_perfil'])
{!!Form::text('titulo',null[
'class'=>'form control input md',
'占位符'=>'泰特罗',
“所需数据”=>“真”,
“所需数据信息”=>“O campo Titoloéobrigatório”,
“模式”=>“^[A-Za-zã195;èèèèèèèèèèèèèèêêêèèèèèèè232,
“数据模式消息”=>“Sóse aceita letras”,
“数据最小长度”=>“3”,
“数据最小长度消息”=>“第三个字符的标题”,
“数据最大长度”=>“20”,
“数据最大长度信息”=>“20字符的内容”,
])
!!}
{!!Form::label('ano','ano',['class'=>'label_perfil'])
{!!Form::text('ano',null[
'class'=>'form control input md',
“占位符”=>“Ano”,
“所需数据”=>“真”,
“所需数据信息”=>“O campo Anoéobrigatório”,
'模式'=>'^[0-9]{4}$',
“模式消息”=>“Sóse aceita números”,
]) !!}
{!!Form::label('genro','Categoria',['class'=>'label\u perfil'])
{!!Form::select('genro',['Design'=>'Design','webdesign'=>'webdesign','Audiovisual'=>'Audiovisual','Branding'=>'Branding']),null[
'class'=>'form control input md',
“所需数据”=>“真”,
“所需数据信息”=>“O campo Categoriaéobrigatório”,
]) !!}
{!!Form::label('descripao','descripço',['class'=>'label_perfil'])
{!!Form::textarea('descripao',null[
'class'=>'form control input md',
'样式'=>'高度:100px;大小:无;',
“占位符”=>“描述”,
“所需数据”=>“真”,
“所需数据信息”=>“O campo DescriptionçOéobrigatório”,
“模式”=>“^[0-9A-Za-zã195;èèè205;êêêêêêêêêêêêêêêêêêêêê,
“数据模式消息”=>“Estáalgo errado”,
“数据最小长度”=>“10”,
“数据最小长度消息”=>“10个字符的描述”,
“数据最大长度”=>“200”,
“数据最大长度消息”=>“描述200个字符的内容”,
]) !!}
{!!Form::label('imagens','Imagem',['class'=>'label\u perfil'])
{!!Form::file('imagens[])[
“类”=>“输入文件”,
“多个”=>true,
“必需”=>“必需”,
'data parsley filemaxmegabytes'=>'2',
'数据欧芹触发器'=>'更改',
“data parsley filemimetypes'=>“图像/jpeg,图像/png”
]) !!}
粪便
{!!表单::提交('Acrescentar公文包',['class'=>'btn btn primary'])
{!!Form::close()!!}
var-app=app |{};
//乌提尔斯
(函数($,应用程序){
"严格使用",;
app.utils={};
app.utils.FormDataSupported=(函数(){
return!!(“窗体数据”在窗口中);
}());
}(jQuery,app));
//欧芹验证器
(函数($,应用程序){
"严格使用",;
窗户,欧芹
.addValidator('filemaxmegabytes'{
requirementType:'字符串',
validateString:函数(值、需求、实例){
如果(!app.utils.FormDataSupport){
返回true;
}
var file=parsleyInstance.$element[0]。文件;
var maxBytes=要求*1048576;
如果(file.length==0){
返回true;
}
return file.length===1&&file[0]。大小此问题的一部分可能是w/jsfiddle。我将您的欧芹javascript更改为rc4,并将method='post'添加到您的小提琴中,得到了与前几天遇到的欧芹问题相同的响应
我最终把它放在了codepen上,并且能够在那里工作/修复它
我会把这当作一个评论,但我没有要点