Обнаружить измененное текстовое поле ввода
Я просмотрел множество других вопросов и нашел очень простые ответы, включая приведенный ниже код. Я просто хочу определить, когда кто-то изменяет содержимое текстового поля, но по какой-то причине оно не работает... Я не получаю ошибок консоли. Когда я устанавливаю точку останова в браузере с помощью функции change()
она никогда не срабатывает.
$('#inputDatabaseName').change(function () {
alert('test');
});
<input id="inputDatabaseName">
Ответы
Ответ 1
Вы можете использовать input
событие Javascript в jQuery следующим образом:
$('#inputDatabaseName').on('input',function(e){
alert('Changed!')
});
В чистом JavaScript
document.querySelector("input").addEventListener("change",function () {
alert("Input Changed");
})
Или вот так:
<input id="inputDatabaseName" onchange="youFunction();"
onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();"/>
Ответ 2
попробуйте keyup вместо изменения.
<script type="text/javascript">
$(document).ready(function () {
$('#inputDatabaseName').keyup(function () { alert('test'); });
});
</script>
Здесь официальная документация jQuery для .keyup().
Ответ 3
В каждом ответе не хватает некоторых моментов, поэтому вот мое решение:
$("#input").on("input", function(e) {
var input = $(this);
var val = input.val();
if (input.data("lastval") != val) {
input.data("lastval", val);
//your change action goes here
console.log(val);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input">
<p>Try to drag the letters and copy paste</p>
Ответ 4
Текстовые входы не запускают событие change
, пока не потеряют фокус. Нажмите вне входа и появится предупреждение.
Если обратный вызов должен срабатывать до того, как текстовый ввод теряет фокус, используйте событие .keyup()
.
Ответ 5
onkeyup, onpaste, onchange, oninput
, похоже, терпит неудачу, когда браузер выполняет автозаполнение в текстовых окнах. Чтобы обработать такой случай, включите "autocomplete='off'
" в текстовое поле, чтобы браузер не мог автозаполнять текстовое поле,
Например,
<input id="inputDatabaseName" autocomplete='off' onchange="check();"
onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();" />
<script>
function check(){
alert("Input box changed");
// Things to do when the textbox changes
}
</script>
Ответ 6
В моем случае у меня было текстовое поле, которое было прикреплено к datepicker. Единственное решение, которое сработало для меня, заключалось в том, чтобы обрабатывать его внутри события onSelect от datepicker.
<input type="text" id="bookdate">
$("#bookdate").datepicker({
onSelect: function (selected) {
//handle change event here
}
});
Ответ 7
Я думаю, что вы также можете использовать keydown
:
$('#fieldID').on('keydown', function (e) {
//console.log(e.which);
if (e.which === 8) {
//do something when pressing delete
return true;
} else {
//do something else
return false;
}
});
Ответ 8
ЗА РАБОТОЙ:
$("#ContentPlaceHolder1_txtNombre").keyup(function () {
var txt = $(this).val();
$('.column').each(function () {
$(this).show();
if ($(this).text().toUpperCase().indexOf(txt.toUpperCase()) == -1) {
$(this).hide();
}
});
//}
});