javascript上的setTimeout(),用于基于表单提交的自定义URL

时间:2013-12-29 23:10:14

标签: javascript php jquery html forms

如何解决?我一整天都在苦苦思索 - 看其他帖子并尝试不同的方法。非常感谢任何帮助......〜新手

此行javascript上的setTimeout()会破坏代码 - 导致为自定义URL传递的空值。

计划是

  1. 用户在文本字段中键入值。
  2. 该值显示在网页上。
  3. 暂停4秒后,用户将根据他们在文本字段中输入的值自动重定向到新网页...此值将通过提交表单传递到URL中。
  4. ......被困在#3。页面暂停4秒,但没有值传递给URL,它会重定向到主目录。

    有问题的代码:

    <form id="type_form" action="html-echo.php" method="post" onsubmit="setTimeout(function() { location.href='http://localhost:8888/vanity/site/' + document.getElementById('nav').value; return false; }, 4000);">
          <input id="nav" maxlength="10" type="text" name="nav" autofocus placeholder="TYPE YOUR CHOICE... (spelling counts)">
    
            <script>
              if (!("autofocus" in document.createElement("input"))) {
                document.getElementById("nav").focus();
              }
            </script>
          <button class="send" type="submit">SEND</button></form>
    

    谢谢!

2 个答案:

答案 0 :(得分:1)

尝试更像这样

<form id="type_form" action="html-echo.php" method="post">
    <input id="nav" maxlength="10" type="text" name="nav" placeholder="TYPE YOUR CHOICE... (spelling counts)" autofocus />
    <button class="send" type="submit">SEND</button>
</form>
<script type="text/javascript">
    if (!( document.activeElement.id || document.activeElement.id == 'nav')) {
        document.getElementById("nav").focus();
    }

    document.getElementById('type_form').onsubmit = function() {
        setTimeout(function() {
            document.location.href = 'http://localhost:8888/vanity/site/' + document.getElementById('nav').value;
        }, 4000);

        return false;
    }
</script>

此外,在timeOut中返回false并不会阻止表单提交,您必须返回错误的页面。

答案 1 :(得分:0)

你可以试试这个:

<form id="type_form" 
 action="html-echo.php" method="post" 
 onsubmit="var redir='http://localhost:8888/vanity/site/' 
      + document.getElementById('nav').value;
      setTimeout(function() { location.href=redir; }, 4000);">