【问题标题】:Possible bug with <select><option> value modification and Back button on Chrome<select><option> 值修改和 Chrome 上的后退按钮可能存在错误
【发布时间】:2013-04-22 15:06:28
【问题描述】:

Chrome 版本(键入 about:版本 28.0.1491.0 canary 和 26.0.1410.65 Google Chrome): 操作系统(Mac OS X Mountain Lion): 该问题仅发生在 Chrome Canary 和常规 Google Chrome 上。 Firefox、Safari 或 IE9(Windows 测试)最新版本都没有问题。

以下代码将所有 stateBill 值更改为与文本值相同。

然后将其提交到另一个页面并单击浏览器页面的返回按钮。所选选项在下拉菜单中不可见(即显示为空白),即使 html 源代码仍显示它已选中。

如果我不执行 jquery 函数并提交并在浏览器上单击返回,则所选选项文本正确显示在下拉列表中。

也许它在 chrome 上的 jquery 或者它在 Chrome 问题上的 javascript。

有什么想法吗?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd"
    >
<html>
</head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<form target="_self" action="http://google.com">
    Click Submit. When it goes to google, Click Back button of browser.<br/>
    Will see that drop down is empty!
    <!-- Abbreviated states list -->
    <select name="stateBill" class="required" id="stateBill">
        <option value="">- Select -</option>
        <option value="1">Alabama</option>
        <option value="2">Alaska</option>
        <option value="3" >American Samoa</option>
        <option value="4" selected="selected">Arizona</option>
        <option value="5">Arkansas</option>
    </select>
    <input type="submit" value="Submit">
<form>
</body>
<script>
$(function(){
    // Change all state values to be the same as the state text.
    var text;
    $("#stateBill option:gt(0)").each(function(i,j){
        text=$(j).text();
        $(j).val(text);
    }); 
})
</script>
<html>

【问题讨论】:

  • 您是在寻找解决方法、解释还是什么?
  • 我找到了一个简单的解决方法,方法是创建一个隐藏的 文本,然后在提交或更改之前将其设置为所选值。还有其他建议吗?我想我想知道这是一个错误还是我做错了什么。
  • 我偶然发现了同样的问题,在对我自己的代码进行了数小时的研究后,我得出了同样的结论。 autocomplete=off 立即修复了它。
  • 这只是我现在的想法。 6年后。我们知道它的根源吗?
  • 没有。只需使用建议的解决方法之一,然后继续 :)

标签: google-chrome button back


【解决方案1】:

我遇到了同样的问题,并且在搜索 Google 时遇到了这个问题。对于其他遇到此问题的人:我通过在表单上设置 'autocomplete="off"' 解决了这个问题。当然,这可能不适用于所有情况。

我在 OSX 10.9 上运行 Chrome 30.0.1599.101。该网站是使用 Wicket 框架(使用 jQuery 实现 AJAX)构建的。

【讨论】:

  • 你是怎么找到它的?这是一个纯粹的黑魔法。我们应该被正式指定为巫师。
  • 天才。我已经花了几个小时......但你为我节省了更多时间。谢谢。
  • 我仍然在带有 Wicket 的 Chrome 47 上遇到此问题。将我的选择包装在一个表单中并添加 autocomplete=off ,它就像一个魅力。
  • 哦,我的话。我开始认为这是不可能的,并准备重新做整个页面(将 asp.net DropDownLists 从后面的代码写入页面)并使用UpdatePanel。这个问题是一个巨大的决定因素。我设置了AutoComplete="Off",它起作用了。是的,这为我节省了大量的工作时间。
  • @chris-snyder - 您是如何找到解决方案的?
【解决方案2】:

我通过创建隐藏文本并在提交或更改之前将其设置为所选值找到了一个简单的解决方法。

【讨论】:

    【解决方案3】:

    简单的 jQuery 解决方法。

    $(document).ready(function () {
        $("select").each(function () {
            $(this).val($(this).find('option[selected]').val());
        });
    })
    

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多