<select> <option>值修改和Chrome上的“返回”按钮</select> </select>可能存在错误

时间:2013-04-29 02:22:43

标签: google-chrome button back

Chrome版本(关于:版本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功能并提交并单击Back on browser,则所选选项文本会正确显示在下拉列表中。

可能是它在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>

3 个答案:

答案 0 :(得分:19)

我遇到了同样的问题,在搜索Google时遇到了这个问题。对于其他任何绊脚石的人:我通过在表单上设置'autocomplete =“off”'来解决问题。当然,这可能不适合所有情况。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

简单的jQuery解决方法。

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