Я пытаюсь сделать простой калькулятор возраста. Он просто добавляет возраст на стороне ввода. Он вычисляет возраст, который находится внутри ввода datepicker. .split не очень чистый, но это просто изменение формата даты.Почему моя функция .change() внутри плагина jquery не работает?
Я предполагаю, что моя проблема - проблема сферы.
Что мне нравится, это мой плагин, чтобы обновить возраст при изменении ввода. Вот оно:
(function ($) {
$.fn.ageIt = function() {
var that = this;
var positonthat = $(that).position();
var sizethat = $(that).width();
//Add div for ages
var option = {
"position": " relative",
"top": "0",
"left": "300"
};
var templateage = "<div class='whatage" + $(this).attr('id') + "' style='display:inline-block;'>blablabla</div>";
$(that).after(templateage);
var leftposition = (parseInt(sizethat) + parseInt(positonthat.left) + parseInt(option.left));
var toposition = parseInt(positonthat.top) + parseInt(option.top);
$('.whatage' + $(this).attr("id")).css(
{
position: 'absolute',
top: toposition + "px",
left: leftposition + "px",
"z-index": 1000,
}
);
//uptadateage
function updateage(myobj) {
var formateddate = myobj.val().split(/\//);
formateddate = [formateddate[1], formateddate[0], formateddate[2]].join('/');
var birthdate = new Date(formateddate);
var age = calculateAge(birthdate);
$('.whatage' + $(myobj).attr("id")).text(age + " ans");
};
//updateage($(this));
$(this).on("change", updateage($(this)));
//
}
})(jQuery);
function calculateAge(birthday) {
var ageDifMs = Date.now() - birthday.getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
$("#BirthDate").ageIt();
Поскольку вы присваиваете возвращаемое значение 'updateage ($ (это))', как 'change' обработчик события – Andreas
Приемники событий принимают обратные вызовы. Обратный вызов - это функция, которую вы хотите выполнить при захвате события. Вы вызываете обратный вызов немедленно, следовательно, побеждаете цель обратного вызова. – Damon
Если вы хотите ссылаться на цель события, jquery связывает ее с 'this', если вы не используете синтаксис функции стрелки – Damon