Инициирование событий на элементах ввода с использованием JavaScript - PullRequest
0 голосов
/ 16 марта 2012

Я хочу вызвать событие в значении входного элемента с помощью javascript. Значение входного элемента изменяется с помощью сценария и не вводится. Я знаю, что событие onChange возникает не после изменения значения, но после того, как значение изменено и элемент теряет фокус (мышь щелкает вне элемента.) .. Здесь элемент ввода не теряет фокус. Так что событие onChange не будет запускаться. Так как это сделать .. Ниже приведен сценарий, как только я попробовал и потерпел неудачу

<html>
 <head>
       <script type = 'text/javascript'>
                function changed()
                {
                          alert('changed');
                }
                function change()
                {
                       document.getElementById('myId').value = 'Hello';
                }


       </script>
 </head>
 <body>
    <input type = 'text'  id = 'myId' onChange= 'javascript:changed();'/>
    <input type ='button'  value = 'change'  onClick = 'javascript:change();'/>
 </body>

Я имею в виду, что функция change () должна вызываться при изменении содержимого внутри текстового поля с помощью функции change (). Как это сделать. Вот jsfiddle для кода http://jsfiddle.net/BFz2a/

Ответы [ 4 ]

1 голос
/ 16 марта 2012

Ответ прост

function change(){
   var el = document.getElementById('myId');
   el.value = 'Hello';
   el.onchange(); // or simply call changed();
}

и javascript: не нужны внутри onclick и onchange просто используйте

onClick = "change();"

1 голос
/ 16 марта 2012

В вашей функции, которая обрабатывает событие click, вы можете вручную вызвать событие onchange для Input.

function change()
{
    var inputEl = document.getElementById("myId");
    inputEl.value = 'Hello';
    inputEl.onchange();
}
1 голос
/ 16 марта 2012

Звоните changed() после change(): http://jsfiddle.net/BFz2a/11/

function change() {
    document.getElementById('myId').value = 'Hello';
    changed(); // Calls the other function
}

Содержимое внутри прослушивателей событий (onchange=" this is inside ") анализируется как JavaScript. Таким образом, javascript: является устаревшим . На самом деле он обрабатывается как метка .
Префикс javascript:... имеет смысл только в ссылках, например <a href="javascript:alert('test');">Test</a>.

0 голосов
/ 16 марта 2012
function change(){
    var el=document.getElementById('myId');
    el.value="Something";
    changed(el);
}
function changed(el){
    alert(el.value);
}
change();

Скрипка здесь .

...