javascript - 多选,一一点击选项弹出新窗口

标签 javascript html onclick popupwindow multipleselection

我需要在逐个单击多个选择选项时弹出一个网址。这意味着当我单击一个选项时,它应该弹出一个新窗口,用户可以在其中提交一些数据并返回到上一个 html 窗口。现在,用户可以再次选择一个选项(Ctrl+单击),并且应该打开一个新的弹出窗口。但弹出的 url 包含选项值。

<select multiple="multiple" id="FldSel" name="FldSel" size=15 onchange="callInstrumentField();"  >                                                                  
    <option isred= "A" value="1">1</option>
    <option isred= "A" value="2">2</option>
    <option isred= "A" value="3">3</option>                                                                                             
    <option isred= "A" value="4">4</option>
</select>

//JavaScript 函数是:

 function callInstrumentField()
 {

       var url;
       var w;
       var InstAct;
       var InstName = document.ATTForm.instname.value.replace(/\s/gi,"");
       var sel = document.getElementById('FldSel');
       var selected = sel.options[sel.selectedIndex];
       var FldSelVel = sel.value;
       var FldType = selected.getAttribute("isred");
       var x2 = document.ATTForm.InstrAction.value;

       if(InstName=="")
             {
             alert("Please Enter Instrument Name");
             document.getElementById("instname").focus();
             return false;
        }
        else{
            if(x2=="UPDATE")
                {
                InstAct= 'SELECT';
            }
            else
                {
                InstAct=x2;
            }
       //var x2="SELECT";
            if (FldType == "Dropdown")
                {
                url = '?func=lsdms.ViewInstrumentFldSel&InstrAction='+InstAct+'&InstruMntNo='+FldSelVel;
                w = window.open(url,"","height=340,width=680,scrollbars=yes,resizable=yes,menubar=no,toolbar=yes,status=yes");

                if ( w.focus )
                    {
                    w.focus();
                }

            }
        } 
}

但它没有按预期的方式工作。每次它在脚本中传递先前选择的选项值时。

最佳答案

我尝试了您的代码来获取正确选择的选项,但没有发现任何问题。

如果通过chrome工具调试并在上面添加断点

var FldSelVel = sel.value;

您应该能够询问这些值。

更新

<小时/>

可以通过迭代选项并测试其所选值来检测多选

for (x=0;x< sel.options.length;x++)
  {
    if(sel.options[x].selected)
      {
        alert(sel.options[x].value);             
      }
  }

如果您需要在点击时触发事件,可以使用 jQuery

$('#FldSel').on('change', function() {
  var value = $(this).val();
  alert(value);
});

您现在可以调用来显示弹出窗口,而不是警报。

关于javascript - 多选,一一点击选项弹出新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38527333/

相关文章:

javascript - Onclick 粗体选择

javascript - 带有 webpack 基本示例的 Vue 路由器

javascript - jsTree无法通过ID找到节点

javascript - HTML5 捕获和保存视频

html - 按钮在不寻常的地方

python - 如何在 Selenium for Python 中切换到新窗口?

javascript - 嵌套在每个循环中以插入值,该值在数组中没有重复,并且循环从第一个开始

javascript - 使用 jquery 获得老虎机效果

javascript - 更改后获取html元素值

asp.net-core - Core 3.1 Blazor 应用程序中的 onclick 不起作用