IE 9清除表单字段

时间:2012-04-03 14:28:48

标签: forms internet-explorer internet-explorer-9

这是一个我似乎无法解决的奇怪问题。在WordPress网站上,我通过短代码在网站上输出了几种表格(登录,注册和其他)。提交表单后,他们的数据将通过侦听$ _POST数据的“init”挂钩进行处理。

请注意,该网站正在运行WordPress,但我认为这不是WordPress问题,这就是我在这里发帖的原因。

在IE 9中提交表单时,单击“提交”时将清除所有字段的值。例如,假设有一个名为“username”的输入字段,字段的值设置为“johndoe”;当通过除IE 9(包括7和8)之外的任何浏览器提交表单时,数据如下所示:

$_POST['username'] = 'johndoe'

完全符合预期。

但是,当表单与IE9一起提交时,它会出现如下:

$_POST['username'] = ''

据我所知,它发生在网站上的每一个表格中。

例如,我构建的自定义登录表单如下所示:

<form id="re_login_form" class="re_login_form" action="" method="post">
    <fieldset>
            <label for="re_user_Login"><?php _e('Username', 're'); ?></label>
            <input name="re_user_login" id="re_user_login" class="required" type="text" title="<?php _e('Username', 're'); ?>"/>
    </fieldset> 
    <fieldset>
            <label for="re_user_pass"><?php _e('Password', 're'); ?></label>
            <input name="re_user_pass" id="re_user_pass" class="password required" type="password"/>
    </fieldset>
    <fieldset class="form-action">
            <input type="hidden" name="refalf_redirect" value="<?php echo $redirect; ?>"/>
            <input type="hidden" name="re_login_nonce" value="<?php echo wp_create_nonce('re-login-nonce'); ?>"/>
            <input id="re_login_submit" type="submit" class="button re_submit" value="<?php _e('Log In', 're'); ?>"/>
            <p class="forgot-password"><a href="<?php echo wp_lostpassword_url( get_permalink() ); ?>" title="<?php _e('Lost Password', 're'); ?>"><?php _e('Lost Password?', 're'); ?></a></p>
    </fieldset> 
</form>

其中一个特别令人感兴趣的事情是,在IE9中单击提交时,字段可以清楚地清除它们的值。这也就像提交按钮在IE9中触发清除字段的东西一样。

有人有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我能够通过为每个输入字段赋予占位符属性来解决此问题。我仍然不知道为什么它会起作用,但是当占位符存在时,一切都运行良好。

答案 1 :(得分:1)

答案 2 :(得分:0)

我刚刚经历了一些类似的案例:IE9仅部分发布了一个表单;一些价值在提交后被清除。我测试了使用IE9,IE10,IE11,Chrome36,FF31提交表单,除IE9外,所有其他工作正常。

所以我检查了标记,并且在主窗体页面中嵌套了另一个窗体,它实际上没有任何输入字段或提交按钮,它是由一些自动模板/编辑器软件创建的。

删除这些额外的表单节点后,IE9开始提交所有字段。我使用ASP.NET 4.5 MVC4。