2017-01-09 3 views
1

Проверка jQuery работает нормально, но она не работает для массива. Пожалуйста, проверьте рабочий код здесь.Проверка подлинности jquery не работает для массива

http://jsfiddle.net/rq5ra/1050/

Если я добавил массив в входе, то он не работает.

HTML код

<form id="createprofile"> 
    <input type="file" name="profilepic[]"> 
    <input type="file" name="profilepic[]"> 
    <input type="submit" /> 
</form> 

JQuery код

$.validator.addMethod('filesize', function (value, element, param) { 
    return this.optional(element) || (element.files[0].size <= param) 
}, 'File size must be less than {0}'); 
jQuery(function ($) { 
    "use strict"; 
    $('#createprofile').validate({ 
     errorElement: "label" 
     , errorClass: "has-error" 
     , submitHandler: function (form) { 
      form.submit(); //return false; 
     } 
     , highlight: function (element) { 
      $(element).closest('.form-group').removeClass('success').addClass('has-error'); 
     } 
     , rules: { 
      profilepic[]: { 
       extension: "jpg,jpeg" 
       , filesize: 300000, //500kb 
      } 
     }, 
     messages: { 
      profilepic[]: { 
       extension: "Please upload only jpg, jpeg format" 
       ,filesize: "Please upload maximum 500Kb" 
      } 
     } 
    }); 
}); 

Пожалуйста, помогите мне исправить это.

+0

Почему вы пытаетесь использовать [] в атрибуте имени? –

+0

@AminurRashid, потому что есть несколько входов для одного имени. Пользователь может загружать несколько изображений. – user7152572

+0

AFAIK, атрибут name содержит только строковое значение, не имеет значения, используете ли вы нотацию массива ([]) в имени. –

ответ

0

Пожалуйста, добавьте "profilepicp []"

рабочий код http://jsfiddle.net/rq5ra/1052/

$.validator.addMethod('filesize', function (value, element, param) { 
return this.optional(element) || (element.files[0].size <= param)}, 'File size must be less than {0}'); 
jQuery(function ($) { 
"use strict"; 
$('#createprofile').validate({ 
    errorElement: "label" 
    , errorClass: "has-error" 
    , submitHandler: function (form) { 
     form.submit(); //return false; 
    } 
    , highlight: function (element) { 
     $(element).closest('.form-group').removeClass('success').addClass('has-error'); 
    } 
    , rules: { 
     "profilepic[]": { 
      extension: "jpg,jpeg" 
      , filesize: 300000, //500kb 
     } 
     , profileurl: { 
      remote: { 
       url: "http://localhost:8888/codeigniternew/edit/username_exists" 
       , type: "post" 
      } 
     } 
     , email: { 
      required: true 
      , remote: { 
       url: "http://localhost:8888/codeigniternew/edit/email_exists" 
       , type: "post" 
      } 
     } 
    }, 
    messages: { 
     "profilepic[]": { 
      extension: "Please upload only jpg, jpeg format" 
      ,filesize: "Please upload maximum 500Kb" 
     } 
    } 
}); 
}); 
+0

Спасибо @acmsohail его работе. – user7152572

+0

Полностью не работает при использовании OP Разметка. С помощью этого плагина вы не можете иметь несколько входов, разделяющих одно и то же «имя». См.: http://jsfiddle.net/rq5ra/10 56/ – Sparky

+0

@ Спарки, да, ты прав. Когда несколько входов там, оно показывает сообщение об ошибке для первого ввода. Это должно быть исправлено. Можете ли вы помочь мне исправить ошибку. Пожалуйста, – user7152572

-1

HTML код

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script> 
<form id="FORM_SEND_IMAGE"> 
    <input type="file" id="file" /> 
    <input type="submit" value="submit" /> 
</form> 

JQuery код

function getExtension(filename) { 
    var parts = filename.split('.'); 
    return parts[parts.length - 1]; 
} 

function isImage(filename) { 
    var ext = getExtension(filename); 
    switch (ext.toLowerCase()) { 
    case 'jpg': 
    case 'png': 
    case 'gif': 
     //etc 
     return true; 
    } 
    return false; 
} 

$(document).on('submit', '#FORM_SEND_IMAGE', function(e) { 

    e.preventDefault(); 
    e.stopPropagation(); 

    function failValidation(msg) { 
     alert(msg); // just an alert for now but you can spice this up later 
     return false; 
    } 

    var file = $('#file'); 
    if (!isImage(file.val())) { 
     return failValidation('Please select a valid image'); 
    } 

    var form_data = new FormData($(this)[0]); 

    $.ajax({ 
     url: base_url + 'gallery/add', 
     type: 'POST', 
     data: form_data, 
     dataType: 'json', 
     beforeSend: function() { 
      console.log('before'); 
     }, 
     error: function(error) { 
      console.log(error); 
     }, 
     success: function(data) { 
      console.log(data); 
     }, 
     complete: function() { 
      console.log('complete'); 
     }, 
     processData: false, 
     contentType: false 
    }); 
}); 

demo jsfiddle

+0

, пожалуйста, внимательно прочитайте мой вопрос. отлично, я хочу сделать входной массив, а затем его не работать. – user7152572

+0

несколько изображений @ user7152572? – Mohammad

+0

yes Он должен работать для нескольких входов с таким же именем. Помогите мне исправить – user7152572

Смежные вопросы