以下の jquery モバイル HTML コードでは、ドロップダウンの複数選択オプションが変更されるたびに onchange 関数 (onchangeInDropDown();) が呼び出されます。変更があるたびに、時間のかかる操作 (選択した項目に基づいて UI を更新する) を行っています。複数のオプションをすばやく (次々に) 選択すると、奇妙な動作が見られます。これを処理するためのより良い方法を教えてください。
次のソリューションを実装することを考えましたが、実装方法がわかりません。
onchange 機能を削除し、オーバーレイ メニューに [OK] ボタンを配置します。[OK] ボタンを選択すると、関数が呼び出されて、選択されたすべての項目が取得され、選択された項目に関して UI が更新されます。つまり、すべての変更ではなく、すべてまとめて更新されます。ここでの問題は、オーバーレイ メニューに [OK] ボタンを配置する方法がわからないことです。オーバーレイメニューにOKボタンを配置する方法はありますか
私を助けてください!!
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> Multiselect item </title>
<link rel="stylesheet" href="css/jquery.mobile-1.3.1.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
<!-- below three tags , link and script are for showing pop up toast dialogs -->
<link href="css/toastr.css" rel="stylesheet"/>
<script type="text/javascript" src="javascripts/toastr.js"></script>
<link href="css/toastr-responsive.css" rel="stylesheet"/>
<script type="text/javascript" src="javascripts/jquery.jsPlumb-1.4.1-all-min.js"></script>
<script type="text/javascript">
function onchangeInDropDown (){
//Performing some time consuming operation and updating the ui based on item selected
}
function getDropDownValue() {
var inputElems = document.getElementById("item_drop_select");
count = 0;
for (var i=1; i<inputElems.length; i++) {
if (inputElems[i].selected == true) {
count++;
alert (inputElems[i].value);
// Update the UI based on item inputElems[i].value
}
}
}
</script>
</head>
<body>
<form name="myform">
<div id="item_drop" class="ui-screen-hidden" style="display: block" >
<select data-mini="true" id="item_drop_select" name="item_drop_select" size="1" multiple="multiple" data-native-menu="false" onchange="onchangeInDropDown();">
<option >Multi-select list of item to buy</option>
<option value="milk" id="milk" >Milk</option>
<option value="oil" id="oil" >Oil</option>
<option value="rice" id="rice" >Rice</option>
<option value="softdrinks" id="softdrinks" >Softdrinks</option>
<option value="detergent" id="detergent" >Detergent</option>
</select>
<div data-role="button" id= "goButton" style= "visibility:block" onclick="getDropDownValue();">Get the drop down values </div>
</div>
</form>
</body>
</html>