【问题标题】:form wont send data in ie8表单不会在ie8中发送数据
【发布时间】:2012-03-22 15:31:37
【问题描述】:

我的页面上有一个表单,带有一个文本输入和一个提交输入,用于将信息发送到 php 脚本。用户可以通过按键盘上的“输入”或单击提交按钮来提交表单。

在 IE9 和其他浏览器中,用户可以点击“输入”或点击提交按钮,一切正常,但在 IE 8 中,如果用户点击提交按钮,它可以正常工作,但如果他们按下“输入”表单不发送信息。

表单打开了一个新选项卡,所以我知道当用户点击“输入”时表单正在提交,只是信息不会发送到 IE8 上的新页面。

有人有什么建议吗?

谢谢!

代码:

<form action="/search.php" method="post" onsubmit="location.reload(true)" target="_blank" name="myform">
    <table style="width: 100%; min-width: 728px; margin: 150px 0px 170px 0px; text-align: center;">
        <tr>
            <td valign="middle"><img alt="Logo" src="vivvulogo.png" /><br />
            <input maxlength="256" name="query" id="query" style="width: 400px; height: 25px; font-size: medium;" type="text" />
            <input name="submit" style="height: 30px; width: 120px; height: 30px; font-size: medium; background-color: #CCCCCC; border-style: solid; border-color: #999999; border-width: 1px; vertical-align: top;" type="submit" value="Search" /><br />
             </td>
        </tr>
    </table>
</form>

【问题讨论】:

  • 您可以张贴表格吗?我过去曾见过类似的问题,但我需要一些代码来记忆。
  • 听起来像是一个 javascript 错误...但如果没有您用来提交表单和/或表单本身的代码,很难分辨!
  • 如果是打开新标签,不是直接提交表单,听它的声音,是触发新标签,然后提交表单,对吧?还是反过来?在任何一种情况下,某些浏览器只会将回车键注册为第一个操作,如果您的所有操作都不正确,则不会执行后续操作。如果是这种情况,也提供 JS。
  • 好的,我添加了我的表单代码
  • 我以为可能是onsubmit,但是当我把它拿走时,它没有任何区别

标签: php html forms internet-explorer send


【解决方案1】:

如果您使用的是按钮标签,按 Enter 不会提交表单...

使用 display:none 隐藏提交按钮、将它们放置在页面之外、将它们隐藏在 overflow:hidden 中或任何其他方法也会破坏 enter-to-submit 功能。

如果页面加载时表单被隐藏并使用 JavaScript 显示,则输入提交也将被破坏。

似乎 Internet Explorer 在加载时扫描页面并确定哪些提交按钮是可见的,然后将输入提交功能附加到这些表单。

在没有看到任何代码的情况下,很难确定最适合您的解决方案,但要解决这些情况,您通常可以使用以下 JavaScript:

function addInputSubmitEvent(form, input) {
    input.onkeydown = function(e) {
        e = e || window.event;
        if (e.keyCode == 13) {
            form.submit();
            return false;
        }
    };
}

window.onload = function() {
    var forms = document.getElementsByTagName('form');

    for (var i=0;i < forms.length;i++) {
        var inputs = forms[i].getElementsByTagName('input');

        for (var j=0;j < inputs.length;j++)
            addInputSubmitEvent(forms[i], inputs[j]);
    }
};

如果您正在寻找 jQuery 解决方案...

$(function(){
    $('input').keydown(function(e){
        if (e.keyCode == 13) {
            $(this).parents('form').submit();
            return false;
        }
    });
});

【讨论】:

    【解决方案2】:

    尝试使用

    target="_self" 
    

    而不是

    target="_blank"
    

    希望这应该可行。

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 1970-01-01
      • 2017-12-11
      • 2022-01-11
      • 2022-11-26
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多