不会通过模拟点击

时间:2018-09-26 18:24:51

标签: jquery node.js ajax

给出以下代码:

<form action="/map" method="POST" id="submitform">
    <input type="text" name="uid" id="UID"/>
</form>
    <button type="submit" id="toSubmit" form="submitform" value="submit" >Submit</button>

我有一个功能很好的函数,它可以将数据发送到此表单中并单击“ toSubmit”按钮。

function getData(uid) {
   document.getElementById("UID").value = uid;
   alert(document.getElementById("UID").value);
   document.getElementById("toSubmit").click();
}

在Node.js服务器的代码段下面;

router.post('/map', function(req, res, next) {
    if (!req.body) return res.sendStatus(400);
    var id = req.body.uid;
    console.log(id);
});

我正在将Node.js与express.js和body-parser一起使用。

总而言之,如果我提交数据而不调用getData(uid)函数,则div可以正常工作,只需键入一些输入,然后单击按钮,服务器就会接收到数据,但是当我尝试使div和按钮invisible(display:none;)并使用该功能模拟点击并向数据发送错误的内容。

我认为此.click()函数可能存在限制问题。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

如果ID无效,您可以尝试使用名称提交。

<form name="formName" id="submitForm">
  <input type="text" />
</form>

function submitFormFunction(){
  document.formName.action="yourUrl";
  document.formName.submit();
}

答案 1 :(得分:0)

您不希望模拟按钮,而是要模拟表单提交:

   document.getElementById("submitform").submit();

这应该为您捆绑所有名称输入及其数据。

根据浏览器,您还可以尝试:

    document.forms["submitform"].submit();