表单不会在ie8中发送数据

时间:2012-03-05 05:14:50

标签: php html forms internet-explorer send

我的页面上有一个表单,有一个文本输入和一个提交输入,可以将信息发送到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>

2 个答案:

答案 0 :(得分:0)

如果您使用的是按钮标签,请按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;
        }
    });
});

答案 1 :(得分:0)

尝试使用

target="_self" 

而不是

target="_blank"

希望这应该有用。