Свойство onchange не работает в javascript - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу запустить функцию test(), если пользователь вводит что-то в поле ввода html с помощью id="sc1dc1" (без использования "onchange=" непосредственно в HTML).Что не так?

HTML:

<!DOCTYPE html>
<html>
<head>
 <title></title>
</head>
<body>
 <input type="text" id="sc1dc1" > 
</body>
</html>

Javascript:

var x = document.getElementById("sc1dc1").value;
x.onchange = test;
function test(){alert("Test")};

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Вам необходимо присвоить функцию test атрибуту oninput элемента.x должно быть HTMLInputElement, а не значением элемента.

Изменить

var x = document.getElementById("sc1dc1").value;

на

var x = document.getElementById("sc1dc1");

Использовать oninput вместо onchange, если вы хотите запускать обработчик событий прямо при вводе текста, а не после того, как ввод теряет фокус.

var x = document.getElementById("sc1dc1");
x.oninput = test;
function test(){alert("Test")};
<!DOCTYPE html>
<html>
<head>
 <title></title>
</head>
<body>
 <input type="text" id="sc1dc1" > 
</body>
</html>
0 голосов
/ 28 декабря 2018

Особенность onchange событий в том, что они запускаются только тогда, когда поле <input> теряет фокус.Если вы хотите немедленного ответа, вы должны использовать oninput примерно так:

x.oninput = test;

Вам также нужно сделать x равным фактическому элементу , а не значение элемента.Удаление:

.value

Из этой строки:

var x = document.getElementById("sc1dc1").value;

Исправит это.

Демонстрация с onchange:

var x = document.getElementById("sc1dc1");
x.onchange = test;

function test() {
  alert("Test")
};
<!DOCTYPE html>
<html>

<head>
  <title></title>
</head>

<body>
  <input type="text" id="sc1dc1">
</body>

</html>

Демонстрация с oninput:

var x = document.getElementById("sc1dc1");
x.oninput = test;

function test() {
  alert("Test")
};
<!DOCTYPE html>
<html>

<head>
  <title></title>
</head>

<body>
  <input type="text" id="sc1dc1">
</body>

</html>
0 голосов
/ 28 декабря 2018

JavaScript должен быть таким:

var x = document.getElementById("sc1dc1");
x.onchange = test;
function test(){alert("Test")};
<!DOCTYPE html>
<html>
<head>
 <title></title>
</head>
<body>
 <input type="text" id="sc1dc1" > 
</body>
</html>

Вам не нужно .value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...