使用javascript创建和提交表单

use*_*150 24 javascript

我正在尝试创建一个表单并立即用javascript提交它,我无法弄清楚我做错了什么.这是我的代码:

function autoLogIn(un, pw) {
var form = document.createElement("form");
document.body.appendChild(form);
form.method = "POST";
form.action = "login.php";
var element1 = document.createElement("<INPUT NAME='un' TYPE='hidden' VALUE='"+un+"'>");  
 form.appendChild(element1);
var element2 = document.createElement("<INPUT NAME='pw' TYPE='hidden' VALUE='"+pw+"'>"); 
form.appendChild(element2);
form.submit();
}
Run Code Online (Sandbox Code Playgroud)

Asa*_*din 75

问题是createElement不接受HTML.它接受标记名并返回DOM元素.然后,您可以将此元素的value属性设置为您需要的值.

function autoLogIn(un, pw) {
    var form = document.createElement("form");
    var element1 = document.createElement("input"); 
    var element2 = document.createElement("input");  

    form.method = "POST";
    form.action = "login.php";   

    element1.value=un;
    element1.name="un";
    form.appendChild(element1);  

    element2.value=pw;
    element2.name="pw";
    form.appendChild(element2);

    document.body.appendChild(form);

    form.submit();
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢LOWERCASE TAG NAMES.由于某些原因,使用大写标签和/或属性真的让我烦恼. (4认同)
  • 最好在将输入附加到文档之后将表单附加到文档中,以便DOM仅更新一次.此外,要成功,表单控件必须具有名称或不会发送. (2认同)

Ano*_*oop 5

修改后的代码:jsfiddle

function autoLogIn(un, pw) {
   var form = document.createElement("form");
   document.body.appendChild(form);
   form.method = "POST";
   form.action = "login.php";
   var element1 = document.createElement("INPUT");         
    element1.name="un"
    element1.value = un;
    element1.type = 'hidden'
    form.appendChild(element1);
    var element2 = document.createElement("INPUT");         
    element2.name="pw"
    element2.value = pw;
    element2.type = 'hidden'
    form.appendChild(element2);
    form.submit();
}
Run Code Online (Sandbox Code Playgroud)