2016-08-30 4 views
1

Я хочу определить, когда изменяется содержимое поля ввода. Например, это событие кнопки, как я могу обнаружить это изменение?Как обнаружить измененный вход из события javascript

$('#kunden_plz').on('propertychange change keyup paste input',function(){ 
 
\t console.log("PLZ: "+$(this).val()); 
 
}); 
 

 
$('#change_plz').on('click',function(){ 
 
    $('#kunden_plz').val("12345"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul> 
 
    <li> 
 
    <label>Plz: </label> 
 
\t <input id="kunden_plz" class="plz" size="5" name="plz" value="" type="text" /> 
 
    </li> 
 
</ul> 
 
<button id="change_plz" type="button">Change</button>

Я надеюсь, что кто-то есть идея, за исключением этого:

<button id='btn'>Click Me</button> 
<input type='hidden'id='txtVar' value=''/> 

$("#btn").click(function(){ 
    $("#txtVar").val("1234").change(); 
}); 

$(document).on('change', '#txtVar', function() { 
    alert("called"); 
}); 
+0

Что именно вы спрашиваете? –

+0

Как я могу обнаружить изменение поля ввода из события javascript? – Provie9

+0

Итак, если x = «aa», и вы меняете его на «abbbb», вы хотите проверить, было ли изменено значение при вызове события? –

ответ

2

событие не будет срабатывать при изменении их программно. Однако .trigger(event)/.triggerHandler(event) может использоваться для запуска события.

$('#kunden_plz').on('propertychange change keyup paste input',function(){ 
 
\t console.log("PLZ: "+$(this).val()); 
 
}); 
 

 
$('#change_plz').on('click',function(){ 
 
    $('#kunden_plz').val("12345").trigger('change'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul> 
 
    <li> 
 
    <label>Plz: </label> 
 
\t <input id="kunden_plz" class="plz" size="5" name="plz" value="" type="text" /> 
 
    </li> 
 
</ul> 
 
<button id="change_plz" type="button">Change</button>

Второй вариант опрос Не рекомендуется

var previousVal; 
 
var pollInterval = setInterval(function() { 
 
    var val = $('#kunden_plz').val(); 
 
    if (val !== previousVal) { 
 
     // It changed 
 
     console.log("PLZ: "+val); 
 
    } 
 
    previousVal = val; 
 
}, 100); 
 

 
$('#change_plz').on('click',function(){ 
 
    $('#kunden_plz').val("12345").trigger('change'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul> 
 
    <li> 
 
    <label>Plz: </label> 
 
\t <input id="kunden_plz" class="plz" size="5" name="plz" value="" type="text" /> 
 
    </li> 
 
</ul> 
 
<button id="change_plz" type="button">Change</button>

+0

Изменение поля ввода происходит из другого файла javascript, который я не могу изменить с помощью этой триггерной функции! – Provie9

+1

@ Provie9, Использовать 'clearInterval' после того, как обнаружено изменение – Satpal

+0

okay thanks Я попробую это – Provie9

Смежные вопросы