javascripthtmldom-eventskeyboard-eventshtml.textboxfor

How to set focus and set the text in input text using createEvent and dispatchEvent?


I'm trying to write a code in Javascript, which should set the cursor focus on the input textbox and should trigger a "keypress" event which should set key, say letter 'A' in the textbox.

How to do it? I read we can achieve using createEvent and dispatchEvent. Any Suggestions?


Solution

  • Try this

    <input type="text" id="input-field" />
    
    <script>
    
    var addData = function(data){
    var field = document.getElementById("input-field")
    field.value = document.getElementById("input-field").value+data;
    
    var keyboardEvent = document.createEvent("KeyboardEvent");
    var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ?   "initKeyboardEvent" : "initKeyEvent";
    
    
    keyboardEvent[initMethod](
                   "keypress", // event type : keydown, keyup, keypress
                    true, // bubbles
                    true, // cancelable
                    window, // viewArg: should be window
                    false, // ctrlKeyArg
                    false, // altKeyArg
                    false, // shiftKeyArg
                    false, // metaKeyArg
                    40, // keyCodeArg : unsigned long the virtual key code, else 0
                    0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
    );
    field.dispatchEvent(keyboardEvent);
    
    }
    
     var registerEvents = function(){
     document.getElementById("input-field").addEventListener("keypress",function(event){
        alert("Key Pressed : "+ event.target.value)
     });
    }();
    addData("a");
    addData("b");
    
    </script>
    

    Anyways Entered key will be available in text field, no need to set it explicitly.