我想轉換這個jQuery代碼插入香草JavaScript和我似乎有與重點和模糊事件的問題。轉換這個jQuery的片段香草的JavaScript(FOCUS不工作)
我似乎無法讓我的回調函數執行這些事件。
爲什麼jQuery代碼片段工作,而不是我的?
HTML摘錄
form(class="form js-form" method="post" action="/contact")
div.row
div.col-sm-12
div.form__group.js-form-group
label(class="form__label js-form-label" for="name") Name
input(class="form__input js-form-input" type="text" name="name" id="name" placeholder="Name" required)
div.row
div.col-sm-12
div.form__group.js-form-group
label(class="form__label js-form-label" for="email") Email
input(class="form__input js-form-input" type="email" name="email" id="email" placeholder="Email" required)
div.row
div.col-sm-6
div.form__group.js-form-group
label(class="form__label js-form-label" for="occasion") Occasion
input(class="form__input js-form-input" type="text" name="occasion" id="occasion" placeholder="Occasion" required)
div.col-sm-6
div.form__group.js-form-group
label(class="form__label js-form-label" for="date") Date
input(class="form__input js-form-input" type="date" name="date" id="date" placeholder="Date" required)
div.row
div.col-sm-12
div.form__group.js-form-group
label(class="form__label js-form-label" for="message")
textarea(class="form__textarea js-form-input" name="message" id="message" placeholder="Message" required)
div.row
div.col-sm-12
button.pull-right(class="form__submit js-form-submit" type="submit") Submit
jQuery的片段
$(function() {
$(".js-form").on("input propertychange", ".js-form-group", function(e) {
$(this).toggleClass("has-value", !!$(e.target).val());
console.log(this);
}).on("focus", ".js-form-group", function() {
$(this).addClass("focused");
console.log('focus');
}).on("blur", ".js-form-group", function() {
$(this).removeClass("focused");
console.log("blur");
});
});
香草摘錄不工作
var formFloatingLabels = (function() {
var formSelector = 'js-form',
formGroupSelector = 'js-form-group',
form = document.getElementsByClassName(formSelector)[0],
formGroup = null,
focusedClass = 'focused',
hasValueClass = 'has-value';
if (!form) {
return;
}
formGroup = form.getElementsByClassName(formGroupSelector);
function init() {
bindFormGroupEventListeners();
}
function toggleHasValueClass() {
this.classList.toggle(hasValueClass);
}
function addFocusedClass() {
console.log('focused');
}
function removeFocusedClass() {
console.log('blurred');
}
function bindFormGroupEventListeners() {
var currentFormGroup = null;
for (var i = 0; i < formGroup.length; i++) {
currentFormGroup = formGroup[i];
currentFormGroup.addEventListener('input', toggleHasValueClass);
currentFormGroup.addEventListener('focus', addFocusedClass);
currentFormGroup.addEventListener('blur', removeFocusedClass);
}
}
return {
init: init
}
})();
formFloatingLabels.init();
我認爲重點不是通過添加一個類來實現的。這是一個元素'focus()'的方法。 https://developer.mozilla.org/en/docs/Web/API/HTMLElement/focus –
@MirkoVukušić - 「專注」班級是我自己的CSS課程。但是,從來沒有添加,因爲** addEventListener('焦點'...)**永遠不會被觸發。我的問題是爲什麼? – RandomMath