@uzi_no_uzi

Как передавать свой аргумент в функцию?

Пишу свой плагин для форм отправки. Возник вопрос, как передавать свой аргумент, как это делается например в методе jquery

$('tut selector').each(function(item) {

})


Тут автоматом как-то передается аргумент item, который я могу использовать.

;(() => {
	class Validation {
	
		constructor(options) {
			this.fields        = options.fields;
			this.formElement   = document.querySelector(options.formSelector);

			this._checkRules = {
				phone: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/,
				mail: /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/,

			}
		}

		init() {
			if(Object.prototype.toString.call(this.fields) === '[object Array]') {
				this.fields.map((item) => {
					document.querySelector(item.fieldSelector).addEventListener('blur', (e) => {
						//target - DOM элемент, поле
						//item.text - Условие, по которому нужно проверять строку или регулярное выражение
						//item.required - Обязательное ли поле
						let failCallback     = item.onFail ? item.onFail : this.onFail;
						const target         = event.target;

						if(this.fieldTest(target, item.test, item.required) === false) {
							failCallback();
						} else {
							onSuccess();
						}
						
					})
				})
			} else {
	
			}
		}

		onSuccess() {

		}

		onFail() {
			
		}
	
		fieldTest(field, test = 'default', required = false) {
			if(required && field.value == '') {
				return false;
			}

			switch (test) {
				case 'phone':
					return this._checkRules.phone.test(field.value);
				break;
				case 'mail':
					return this._checkRules.mail.test(field.value);
				break;
				case 'message':
					return field.value.length < 5 ? false : true;
				break;
				default:
					return true;
				break;
			}
		}	
	
	}


	
	var valide = new Validation({
		formSelector: 'form',
		fields: [
			{
				fieldSelector: '.name',
				test: 'name',
				required: true,
				
			},
			{
				fieldSelector: '.phone',
				test: 'phone',
				onFail: () => {
					alert('Коллбэк сработал');
				}
			},
			{
				fieldSelector: '.mail',
				test: 'mail'
			},
			{
				fieldSelector: '.ms',
				test: 'message'
			},
		]
	}).init();



})();
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
Используйте переменные если надо что-то абстрактное передать. Аргумент он для конкретных целей - передает объекты над которым выполняют функцию, в данном случае - каждый объект полученный селектором - перебор массива.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы