需要修改代码,以便当用户跳过已选择的下拉列表之间的下拉列表时出现警报

问题描述 投票:0回答:1

if (document.getElementById('actionId').value == 'recommendWithFin')

{

var curRevSeqId = document.getElementById('currentReviewerSequence').value;

var allRevLen = allReviewersArray.length;

if(全部RevLen <= curRevSeqId) {

alert('在推荐报价之前,您必须选择下一个审批者。');

有效=有效&&假;

}

否则{

for (var i= curRevSeqId;i<=allRevLen;i++)

{

if (allReviewersArray[i]==null || allReviewersArray[i]=='') {

alert("请不要跳过审批者");

有效=有效&&假;

}

}

}

}

我试图从 else 部分修改此代码,以便在用户跳过先前选择的下拉列表之间的任何下拉列表时生成警报。为了提供更多上下文,请考虑有 10 个下拉菜单的场景。用户在第一个下拉列表中选择一个值并跳过下拉列表 2 到 5,而是选择第 6 个下拉列表。在这种情况下,应触发警报,指示在先前选择的下拉列表之间不应跳过任何下拉列表。然而,需要注意的是,用户并不需要选择所有 10 个下拉列表;这是他们的选择。因此,仅当已选择的下拉列表之间存在跳过的下拉列表时,而不是当用户决定不选择存在的每个下拉列表时,才应出现警报。您可以修改代码以合并此功能吗?

尝试了很多逻辑,但数组正在考虑所有下拉菜单并触发警报消息

javascript arrays dropdown
1个回答
0
投票

我无法真正帮助您修改代码,因为您一开始就没有提供工作片段,但这是关于如何做您想做的事情的概念教授。

基本上你会想要:

  1. 选择您的下拉菜单
  2. 监听它们的变化事件
  3. 迭代你的下拉菜单,直到到达当前的下拉菜单,同时有一个标志来指示你之前是否有任何空的下拉菜单

const selects = document.querySelectorAll('select')

for (const select of selects) {
  select.addEventListener('change', (ev) => {
    let sawEmptySelectBefore = false
    for (const select of selects) {
    
      if (select === ev.target && sawEmptySelectBefore) {
        alert('You skipped a select')
        break;
      }


      if (select.value === '') {
        sawEmptySelectBefore = true
      }


    }
  })
}
<select>
  <option value=""> Select a value </value>
    <option value="2"> Value 2 </value>
      <option value="3"> Value 1 </value>
</select>

<select>
  <option value="">select a value </value>
    <option value="2"> Value 2 </value>
      <option value="3"> Value 1 </value>
</select>

<select>
  <option value=""> Select a value </value>
    <option value="2"> Value 2 </value>
      <option value="3"> Value 1 </value>
</select>

<select>
  <option value=""> Select a value</value>
    <option value="2"> Value 2 </value>
      <option value="3"> Value 1 </value>
</select>

© www.soinside.com 2019 - 2024. All rights reserved.