如何在使用多选组合时获得选定值的焦点

How to get focus for selected values when multiselect combo is used

本文关键字:焦点 组合      更新时间:2023-09-26

我使用一个多选组合框,我从组合框中选择几个值,并将所选值保存到db。当我重新打开页面时,我需要将焦点放在已选择并保存的值上。

function getSelectedValues() {
    var from = document.getElementById("309127");
    var to;
    var v = from.options.length;
    var selectedValues = "";
    for (var i = 0; i < v; i++) {
        if (from.options[i] && from.options[i].selected) {
            var CVal = from.options[i].value;
            var CText = from.options[i].text;
            if (selectedValues == "") {
                selectedValues = CVal;
            }
            else {
                selectedValues = selectedValues + "~" + CVal;
            }
        }
    }
    return selectedValues;
}

这是我用来在db中保存所选值的javascript函数。有人能告诉我如何把注意力重新集中在选定的项目上吗?谢谢你

可以使用

document.getElementById("309127").focus();

对于您的问题,我假设您将值发送到PHP页面或类似于更新数据库的东西。如果是这样,当您返回页面时,您的问题将是获取所选值。两个建议:

  • 使用ajax来更新数据库,所以你不需要退出页面,
  • 将选择的值通过GET或类似的方式传递回您的页面,并将焦点设置为页面加载。

编辑 : -------------

例如,如果您通过GET传递值,如(www.example.com?param1=three)

你可以使用javascript在加载时选择该值:

<html>
<body onload="load()">
<select id="example">
    <option value="one"> one </option>
    <option value="two"> two </option>
    <option value="three"> three </option>
</select>
</body>
<script>
function load(){
    var param1 = getParameterByName("param1");
    var selected = document.getElementById('example');
    var opts = selected.options.length;
    for (var i=0; i<opts; i++){
    if (selected.options[i].value == param1){
        selected.options[i].selected = true;
        break;
    }
}
}
function getParameterByName(name)
{
  name = name.replace(/['[]/, "'''[").replace(/[']]/, "''']");
  var regexS = "[''?&]" + name + "=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(window.location.search);
  if(results == null)
    return "";
  else
    return decodeURIComponent(results[1].replace(/'+/g, " "));
}
</script>
</html>

try var from = document.getElementById("309127");from.focus();