JQuery モバイルでナビゲートするときに、入力から一部の値を取得するのに問題があります。ページを最初に開くと、すべてが期待どおりに機能します。ただし、移動してからページに戻ると、入力の値がフィールドの実際の値に対応しなくなります。html は次のとおりです。
<!doctype html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="stylesheet" href="/static/jquery-ui-1.10.3.custom.min.css">
<link rel="stylesheet" href="/static/jquery-mobile/css/themes/default/jquery.mobile-1.3.2.min.css">
<script src="/static/jquery-1.9.1.min.js"></script>
<script src="/static/jquery-ui/jquery-ui-1.10.3.custom/js/jquery-ui-1.10.3.custom.min.js"></script>
<script src="/static/jquery-mobile/js/jquery.mobile-1.3.2.min.js"></script>
<!-- CSS: implied media="all" -->
</head>
<body>
<div data-role="page" id = "main-page">
<div data-role="header" style="overflow:hidden;">
</div>
<div id = "home" data-role="content">
<input type = "text" name = "input_a" id = "input_a">
<select id = "select_a" name = "select_a">
<option value = "a">A</option>
<option value = "b">B</option>
<option value = "c">C</option>
</select>
</div>
</div>
<script type="text/javascript">
function set_condition()
{
var the_variable = "A";
var page = $('[data-role="page"]:last');
if (the_variable === "A")
{
page.find("#select_a[value='a']").remove();
page.find("[name=select_a]").selectmenu('refresh').val('b');
}
console.log($('#select_a').val());
}
$(document).off('pageshow').on('pageshow', '#main-page', function ()
{
set_condition();
});
</script>
</body>
</html>
たとえば、最初にページを開いてオプション B を選択し、Chrome コンソール (および JavaScript) で次のように入力します。
$('#select_a).val()
これは「b」を返します。次に、サイトの残りの部分をナビゲートしてから同じページに戻り、オプションをオプション C に変更して同じコマンドを入力すると、「b」が返されます。テキスト入力でも同じ問題が見られます。つまり、入力が空白のままの場合 - ナビゲートした後、値は返されません。同様に、空白をナビゲートするときに入力フィールドに数字が残っている場合、入力フィールドは空ですが、値が返されます...
したがって、これらの入力の値はナビゲーション後も保持され、選択の場合に値が変更されたように見えても変更されません。どうしてこれなの?