Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当选择框中的选项选择时,如何使用javascript显示警报_Javascript_Alert - Fatal编程技术网

当选择框中的选项选择时,如何使用javascript显示警报

当选择框中的选项选择时,如何使用javascript显示警报,javascript,alert,Javascript,Alert,我有一个网格,它有N行。我有一个选择框,每行有三个选项 <tr> <td> <select id="1"> <option>YES</option> <option>NO</option> <option>IGNORE</option> </select> <td> </tr> <tr> <td

我有一个网格,它有N行。我有一个选择框,每行有三个选项

<tr>
 <td>
   <select id="1">
    <option>YES</option>
    <option>NO</option>
    <option>IGNORE</option>
   </select>
 <td>
</tr>
<tr>
 <td>
   <select id="2">
    <option>YES</option>
    <option>NO</option>
    <option>IGNORE</option>
   </select>
 <td>
</tr>
<tr>
 <td>
   <select id="3">
    <option>YES</option>
    <option>NO</option>
    <option>IGNORE</option>
   </select>
 <td>
</tr>
我想在用户选择忽略时显示一个警报。我不想在用户第一次选择“忽略”时显示警报

让我们考虑选择ID1,如果用户第一次选择“忽略”或“是”,我不想显示警报。但是,如果用户已经单击“是”或“否”,然后下次尝试单击“忽略”,则我希望显示警报


此功能必须适用于所有选择框。有人能帮忙解决这个问题吗

您可以创建一个javascript映射,用于维护下拉列表中某个值被选中的次数。如果下拉列表中的计数大于1,则可以显示警报

<tr>
 <td>
 <select id="1" onchange="updateSelectionCount('1')">
  <option>YES</option>
  <option>NO</option>
 <option>IGNORE</option>
</select>
<td>
</tr>
<tr>
<td> 
<select id="2" onchange="updateSelectionCount('2')">
<option>YES</option>
<option>NO</option>
<option>IGNORE</option>
</select>
 <td>
</tr>
<tr>
<td>
 <select id="3" onchange="updateSelectionCount('3')">
<option>YES</option>
<option>NO</option>
<option>IGNORE</option>
 </select>
<td>
</tr>
<script>
var map = new Object();
function updateSelectionCount(comboId){
    var e = document.getElementById(comboId);
    var selectedValue = e.options[e.selectedIndex].value;
    if(selectedValue=='IGNORE'){
        if(map[comboId]==1){
            alert('selected second time');
        }else{
            map[comboId]=1;
        }
    }else{
        map[comboId]=1;
     }

}
</script>

如果要使用jquery,还可以执行以下操作:

<script type="text/javascript">
    $( document ).ready(function() {
       $('select').on('change', function() {

            if (typeof this.count == 'undefined')
            {
                this.count = 0;
            }
            else{
                if (this.count>=0 && this.value=="2")
                {
                    alert("my Warning")
                }
                this.count += 1
            }
        })
    });
  </script>
   <select>
    <option value="0">YES</option>
    <option value="1">NO</option>
    <option value="2">IGNORE</option>
   </select>

   <select>
    <option value="0">YES</option>
    <option value="1">NO</option>
    <option value="2">IGNORE</option>
   </select>

那么,如果且仅当select2更改为IGNORE时,您是否要发出警报?按行计算是什么意思?你已经有三排了。顺便说一句,使用数字作为ID不是一个好主意。从样式表和选择器引用它们需要一些额外的工作。因此,你需要的是一个计数器,它告诉你有多少忽略被按下,然后如果在计数器=2时运行的语句?@ AAMEDEAEL:让我们考虑ID1,如果用户第一次选择“忽略”或“是”,我不想显示警报。但是,如果用户已单击“是”或“否”,然后下次尝试单击“忽略”,则我希望显示警报。您好@GreenComputers,我已使用代码更新了我的评论。请检查一下。谢谢你的宝贵时间。它按预期工作。