Вот html у меня есть
<input type="text" name="post[price]" id="productUpdate" class="test" disabled />
<div class="abs-locator" id="eventDrive"></div>
Вот мой css
.abs-locator{
width: 17.8%;
position: absolute;
margin-top: -29px;
margin-left: 150px;
height: 27px;
}
Мне нужно выполнить событие щелчка при нажатии скрытого поля ввода
Вот мой js
$('#eventDrive').on('click', function() {
alert('test');
});
Но здесь ничего не происходит. Почему это происходит и как его разрешать
Вам нужно использовать что-то вроде:
$(document).on('click', '#eventDrive', function() {
alert('test');
});
#eventDrive
«отключенным вводом» в контексте OP?
Чтобы иметь событие click на загруженном Ajax содержимом, вам необходимо зарегистрировать событие в контейнере. Я бы сделал что-то вроде этого:
$(document).on('click', '#eventDrive', function() {
alert('test');
});
Таким образом, прослушиватель кликов будет зарегистрирован на весь документ, и каждый раз, когда вы нажмете его, вы увидите, что вы нажали на #eventDrive, даже если этот элемент не существовал в то время, когда вы зарегистрировали слушателя.
Отключенные элементы не запускают события мыши. Большинство браузеров будут распространять событие, происходящее из отключенного элемента, на дерево DOM, поэтому обработчики событий могут быть помещены на элементы контейнера.
Я могу предложить небольшое решение для этого. Это не лучшая практика, но решит вашу проблему:
HTML:
<div style="display:inline-block; position:relative;">
<input id="productUpdate" name="post[price]" type="text" disabled />
<div class="inputOverflow" style="position:absolute; left:0; right:0; top:0; bottom:0;"></div>
</div>
JQuery:
$(".inputOverflow").click(function (evt) {
$(this).hide().prev("input[disabled]").prop("disabled", false).focus();
});