如何更新文本框的值,就好像我们输入了一样?

时间:2015-09-01 18:15:58

标签: javascript jquery firefox-addon firefox-addon-sdk mozilla

我创建了一个firefox附加组件,它可以用给定的输入填充from中的几个字段。例如,页面上#2表单的第二个字段是一个文本框,通常可以使用。

document.forms[2][1].value = "XYZ"

我可以在文本框中看到这个值XYZ。但是如果我继续提交表单,无论是通过脚本还是手动,它都会在此文本框中引发错误。在少数情况下,在给出值之后使用click()。

document.forms[2][1].value = "XYZ"
document.forms[2][1].click()

但即使是在几个网站上都失败了。在手动将光标放在文本框中并输入之前,我才会工作。

  1. 为什么文本框的行为如上?
  2. 有没有办法让这项工作(在javascript或jQuery中)?
  3. 更新:

    function createValueAttribute(formField, attValue){
    formField.focus();
    formField.setAttribute("value",attValue);
    var event = document.createEvent('KeyboardEvent');
    event.initKeyEvent("keypress",       // typeArg,                                                           
                   true,             // canBubbleArg,                                                        
                   true,             // cancelableArg,                                                       
                   null,             // viewArg,  Specifies UIEvent.view. This value may be null.     
                   false,            // ctrlKeyArg,                                                               
                   false,            // altKeyArg,                                                        
                   false,            // shiftKeyArg,                                                      
                   false,            // metaKeyArg,                                                       
                    8,               // keyCodeArg,   8 for Backspace                                                   
                    0);              // charCodeArg);
    formField.dispatchEvent(event);
    
    }
    

0 个答案:

没有答案