Обнаружить измененное текстовое поле ввода

Я просмотрел множество других вопросов и нашел очень простые ответы, включая приведенный ниже код. Я просто хочу определить, когда кто-то изменяет содержимое текстового поля, но по какой-то причине оно не работает... Я не получаю ошибок консоли. Когда я устанавливаю точку останова в браузере с помощью функции 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();"/>

Ответ 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();
            }
        });
    //}
});