【问题标题】:javascript form submit function doesn't submitjavascript表单提交功能不提交
【发布时间】:2016-03-30 20:24:27
【问题描述】:

这是表格:

<form name="loginForm" id="loginForm" method="post">
    <!-- <label>UserName :</label> -->
    <input id="name" name="username" placeholder="username" type="text"  autofocus>
    <!-- <label>Password :</label> -->
    <!-- <input id="password" name="password" placeholder="**********" type="password"> -->
    <input name="submit" type="submit" value=" Login ">
</form>

还有脚本:

document.getElementById("name").addEventListener("keypress", submitForm);
function submitForm() { 
    // document.getElementById("loginForm").submit();
    document.forms.loginForm.submit();
    // alert("Yay, You got this far!");
}

函数 submitForm 被调用,但是表单不会被提交,除非按下回车/回车。我尝试重命名提交输入,然后再次接受输入,似乎调用了函数,但是它不是提交表单,而是刷新表单并清除输入文本字段。

【问题讨论】:

  • 您的form 元素看起来缺少action 属性,不是吗? :)
  • 旁注:在loginForm.submit()之前不需要document.forms.
  • 我对你在这里尝试做的事情有点困惑。看起来每次用户在名称字段中输入任何字符时都会提交表单——即使他们还没有完成输入。我说对了吗?如果没有,您能帮我理解您希望表单的行为方式吗?

标签: javascript php html forms


【解决方案1】:

使用 action 属性可能会更好。 顺便说一句,你应该用/&gt;关闭你的空元素

<form name="loginForm" id="loginForm" method="post" action="http://localhost:80/my_awesome_form_handler.php">
    <input id="name" name="username" placeholder="username" type="text"/>
    <input name="submit" type="submit" value=" Login "/>
</form>

【讨论】:

    【解决方案2】:

    您不需要为此设置事件侦听器。这应该适合你:

    您的表单标签必须具有 action 属性。将其指向正在处理您的表单的任何脚本。

    <form name="loginForm" id="loginForm" method="post" action="script.php">
    <!-- <label>UserName :</label> -->
    <input id="name" name="username" placeholder="username" type="text"  autofocus>
    <!-- <label>Password :</label> -->
    <!-- <input id="password" name="password" placeholder="**********" type="password"> -->
    <input name="submit" type="submit" value=" Login ">
    </form>
    

    对于javascript,使用jQuery:

    jQuery(document).ready(function($) {
        $('#loginForm').on('submit', null, function() {
            $(this).submit();
        });
    }
    

    如果您实际上是在每次在名称字段中输入字符时都尝试提交表单,那么您可以这样做:

    jQuery(document).ready(function($) {
        $('#name').on('keyup', null, function(e) {
            e.preventDefault();
            $('#loginForm').submit();
        });
    }
    

    【讨论】:

    • 谢谢,是的,我刚刚意识到我需要设置一个计时器,以便接受徽章的所有扫描字符,而不是在每个字符输入之后。 . .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2019-03-08
    • 2018-10-02
    • 2020-07-21
    • 2020-09-23
    • 2021-02-21
    • 1970-01-01
    相关资源
    最近更新 更多