多选可逐个单击选项弹出一个新窗口

Multiple select to popup a new window on clicking options one by one

本文关键字:一个 新窗口 窗口 单击 选项      更新时间:2023-09-26

我有一个要求,一个接一个地点击多个选择选项,弹出一个url。这意味着当我点击一个选项时,它会弹出一个新窗口,用户可以在其中提交一些数据并返回到以前的html窗口。现在,用户可以再次选择一个选项(按住Ctrl键并单击),它应该会打开一个新的弹出窗口。但是弹出的url包含option的值。

<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);
});

您现在可以拨打电话来显示弹出窗口,而不是发出警报。