javascript帖子提交不同于输入提交点击?

时间:2012-04-06 09:30:44

标签: javascript html

我有这段代码

<html>
<include jquery>
<script>
  function crea()
  {
     var html = '<form method="get" id="popUpForm" name="popUpForm" action="form_ricorda_dati.php"><hr /><input type="hidden" name="mio" value="1" />input3<input type="text" name="input3" value="" /><br />input4<input type="text" name="input4" value="" /><br /><input type="submit" id="11" value="Procedi" /></form><br /><a href="" onClick="prova()">submit</a>';
     var div = document.getElementById('cont');
     div.innerHTML = html;
  }

  function prova()
  {
     $('#popUpForm').submit();
  }

</script>
<body>
< a href="#" onClick="crea()">lancia funzione JS</a><br /><br />
<div id="cont"></div>
</body>
</html>

此代码:

  1. 当我点击<a href="#" onClick="crea()">时,它会“显示”表单 进入<div id="cont">
  2. 方式1:当我点击<a href="" onClick="prova()">submit</a>时,它会调用$('#popUpForm').submit();
    方式2:点击<input type="submit" id="11" value="Procedi" />
  3. 问题:

    1. 如果我点击<input type="submit" id="11" value="Procedi" />我 重新加载页面并查看正确的查询字符串(表单action="get")。在 重新加载页面,如果我“显示”表单并单击输入我看到最后一个 输入(浏览器自动填充确定)。

    2. 如果我点击<a href="" onClick="prova()">submit</a>,之后,我 看不到查询字符串。在重新加载的页面中,如果我“显示”表单和 点击输入我没看到最后一个输入(浏览器自动填充失败)。

    3. (我在Chrome和IE中看到了这个问题,但在Firefox中没有。)

      目标

      浏览器自动填充应始终显示。

2 个答案:

答案 0 :(得分:0)

问题可能是您使用JavaScript创建的HTML表单在页面加载时不在浏览器的DOM中。您可以将表单的HTML放入要在DOM中呈现的body标记,然后使用JavaScript隐藏它,直到用户点击crea链接。

问题编号 2 似乎是您的链接(<a href="" onclick="prova()"...)可能会转到HREF属性中指定的网址。由于该属性为空,因此您的页面会自行运行。

为了简化操作,您应该将HTML表单保留在JavaScript逻辑之外。此外,由于您使用的是jQuery,我已将您的函数转换为绑定。

JSFIddle中的工作示例。

<html>
    <head>
        <script type="text/javascript" src="url/to/jquery.js"></script>
        <script type="text/javascript">
            jQuery(function(){
                var form = jQuery( '#form' ),
                    crea = jQuery( '#creaLink' ),
                    prova = jQuery( '#provaLink' );

                form.hide();

                crea.on( 'click', function(){
                    form.show();
                });

                prova.on( 'click', function(){
                    form.submit();
                });
            });
        </script>
    </head>
    <body>
        <a href="#" id="creaLink">lancia funzione JS</a>
        <br />
        <br />
        <div id="form">
            <form method="post" id="popUpForm" name="popUpForm">
                <hr />
                <input type="hidden" name="mio" value="1" />
                input3
                <input type="text" name="input3" value="" />
                <br />

                input4
                <input type="text" name="input4" value="" />
                <br />

                <input type="submit" id="11" value="Procedi" />
            </form>
            <br />
            <a href="#" id="provaLink">submit</a>
        </div>
    </body>
</html>​

答案 1 :(得分:-1)

依赖浏览器的自动填充可能不是一个好主意,因为不同的浏览器可能有不同的行为。现在,如果我认为即使在服务器上接收并处理表单数据之后您希望值存在于字段中,那么我建议您使用AJAX技术。将表单数据在后台发送到服务器,并在收到响应后仅显示结果。