【问题标题】:IE 9 Clears Form FieldsIE 9 清除表单域
【发布时间】:2012-04-17 05:32:29
【问题描述】:

这是一个我似乎无法解决的非常奇怪的问题。在 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 中触发了清除字段的操作。

有人有什么想法吗?

【问题讨论】:

  • 这不是安全功能吗?假设您登录 facebook,然后注销,您是否真的希望将密码存储在该框中,以便下一个使用您的 PC 的人注入 javascript(只需在地址栏中输入)以获取您的实际密码(纯文本)?我很确定大多数最新的浏览器不再存储表单数据(我的 FF 3.6.3 也没有)
  • 与安全无关。在提交之前清除所有表单字段,这意味着在字段中输入的数据甚至没有被提交。

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


【解决方案1】:

我刚刚经历了一点类似的情况:IE9 只回传了一个表单的一部分;一些值在提交时被清除。我用 IE9、IE10、IE11、Chrome36、FF31 测试了提交表单,除 IE9 外,其他所有表单都可以正常工作。

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

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

【讨论】:

    【解决方案2】:

    我可以通过给每个输入字段一个占位符属性来解决这个问题。我仍然不知道为什么它会起作用,但是当占位符出现时,一切正常。

    【讨论】:

    • 你能举一个占位符属性的例子吗?我想我可能遇到了类似的问题...
    【解决方案3】:

    【讨论】:

    • 我不明白这与问题有什么关系——那篇文章是关于 IE8 和本地 MAPI 客户端之间的交互,而问题是关于 IE9 提交到服务器。
    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多