使用 JavaScript 自动提交表单

IT技术 javascript forms
2021-03-03 05:31:01
<form name="myForm" id="myForm" action="test.php" method="POST">
  <p>
  <input name="test" value="test" />
  </p>
  <p>
    <input type="submit" name="submit" value="Submit" />
  </p>
</form>

    <script>

    var auto_refresh = setInterval(
    function()
    {
    submitform();
    }, 10000);

    function submitform()
    {
      alert('test');
      document.myForm.submit();
    }
    </script>

一旦登陆页面,我在尝试每10 秒自动提交一次表单时遇到问题表单名称是 myForm action="test.php"我收到'test'消息,但页面没有提交表单。

除了在页面加载时自动加载功能之外还有其他解决方案吗?

修正:name="submit"从提交按钮中删除 ( ) 并且它工作顺利。

5个回答

您需要指定一个框架,一个目标,否则您的脚本将在第一次提交时消失!

更改document.myFormdocument.forms["myForm"]

<form name="myForm" id="myForm" target="_myFrame" action="test.php" method="POST">
    <p>
        <input name="test" value="test" />
    </p>
    <p>
        <input type="submit" value="Submit" />
    </p>
</form>

<script type="text/javascript">
    window.onload=function(){
        var auto = setTimeout(function(){ autoRefresh(); }, 100);

        function submitform(){
          alert('test');
          document.forms["myForm"].submit();
        }

        function autoRefresh(){
           clearTimeout(auto);
           auto = setTimeout(function(){ submitform(); autoRefresh(); }, 10000);
        }
    }
</script>
修改了脚本,经过测试,可以正常工作,配合使用效果更好 setTimeout
2021-04-20 05:31:01
name="submit"submit按钮中删除因为document.forms["myForm"].submit将其视为一个元素
2021-05-05 05:31:01
我不明白。我究竟做错了什么?将文件上传到wildmedia.ro/auto_submit.php,仍然只弹出“test”。未提交表格。
2021-05-07 05:31:01
您需要指定一个框架,一个目标,否则您的脚本将在第一次提交时消失!
2021-05-11 05:31:01
id在这个例子中,表单的属性不是必需的,因为表单是通过name属性访问的(除非您当然更喜欢使用document.getElementById(),在这种情况下应该指定一个id属性而不是name。)
2021-05-16 05:31:01

尝试使用document.getElementById("myForm")代替 document.myForm。

<script>
var auto_refresh = setInterval(function() { submitform(); }, 10000);

function submitform()
{
  alert('test');
  document.getElementById("myForm").submit();
}
</script>
怎么行不通?您是否在 javascript 控制台中看到错误?
2021-05-08 05:31:01

延迟自动提交的简单解决方案

<body onload="setTimeout(function() { document.frm1.submit() }, 5000)">
   <form action="https://www.google.com" name="frm1">
      <input type="hidden" name="q" value="Hello world" />
   </form>
</body>

这个解决方案对我有用:

<body onload="setTimeout(function() { document.myform.submit() }, 5000)">
   <form action=TripRecorder name="myform">
      <textarea id="result1"  name="res1" value="str1" cols="20" rows="1" ></textarea> <br> <br/>
      <textarea id="result2" name="res2" value="str2" cols="20" rows="1" ></textarea>
   </form>
</body>

试试这个,

HtmlElement head = _windowManager.ActiveBrowser.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = _windowManager.ActiveBrowser.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
element.text = "window.onload = function() { document.forms[0].submit(); }";
head.AppendChild(scriptEl);
strAdditionalHeader = "";
_windowManager.ActiveBrowser.Document.InvokeScript("webBrowserControl");
为什么任何人都应该在没有任何解释的情况下使用此代码?请在您的回答中描述此代码的作用。
2021-04-23 05:31:01