У меня есть функция, которая будет проверять размер файла вложения и добавлять ошибки, если размер файла превышает установленный предел, но он ограничен конкретным файловым полем с идентификатором на данный момент и i хотел бы иметь возможность использовать эту функцию во многих полях файлов.Использовать функцию для многих элементов
Если пользователь хочет добавить скажем два изображения, то они могут нажать кнопку, чтобы клонировать поле файла.
// First Example with ID
$('#animal_image_file_0').bind('change', is_valid_dog_image_size);
function is_valid_dog_image_size() {
$this = $('#animal_image_file_0');
if($this[0].files[0].size < 3000000){ // valid
if ($this.closest(".form-group").hasClass("has-error"))
$this.closest(".form-group").removeClass("has-error");
$this.siblings(".help-inline, .form-inline .has-feedback .form-control-feedback, .has-feedback").css("display", "none");
return true
} else { // error
if (!$this.closest(".form-group").hasClass("has-error"))
$this.closest(".form-group").addClass("has-error");
$this.siblings(".help-inline, .form-inline .has-feedback .form-control-feedback, .has-feedback ").css("display", "block");
return false;
}
}
Так я думал применить это ко многим полям файла я мог бы использовать класс вместо этого и затем огня функции с помощью .А («щелчка») метода, когда кнопка клонировать поле щелкает, но присвоение $ (this) в функции не будет работать, не так ли?
$('.add_nested_fields').on('click', function(){
$('.animal_file').bind('change', is_valid_dog_image_size);
});
function is_valid_dog_image_size() {
$this = $('.animal_file');
if($this[0].files[0].size < 3000000){ // valid
if ($this.closest(".form-group").hasClass("has-error"))
$this.closest(".form-group").removeClass("has-error");
$this.siblings(".help-inline, .form-inline .has-feedback .form-control-feedback, .has-feedback").css("display", "none");
return true
} else { // error
if (!$this.closest(".form-group").hasClass("has-error"))
$this.closest(".form-group").addClass("has-error");
$this.siblings(".help-inline, .form-inline .has-feedback .form-control-feedback, .has-feedback ").css("display", "block");
return false;
}
}
Когда я нажимаю .add_nested_fields он клонирует поле файла так, как я мог бы идти об обеспечении, что я мог бы использовать ту же функцию на все экземпляры этого класса в DOM?
Благодаря
ОК, что имеет больше смысла. Поэтому, когда вы говорите родительский элемент, могу ли я использовать класс самой формы или он должен быть div над .animal_file? – Richlewis
@ Richlewis это может быть любой элемент до DOM. Это может быть даже «тело», но вы должны убедиться, что оно не предназначено для полей, которые он не должен. – MarioDS
благодарю вас, я пытаюсь разобраться с делегацией, и я думаю, вы просто помогли мне понять это немного больше – Richlewis