【问题标题】:drop down onchange selected list not working?下拉 onchange 选定列表不起作用?
【发布时间】:2014-10-30 05:45:22
【问题描述】:

当我第二次选择相同的选项时,下拉菜单不起作用。 这是我的代码:

<html>
    <body>
        <p>Select a new car from the list.</p>
        <select id="mySelect" onchange="myFunction()">
            <option value="Audi">Audi
            <option value="BMW">BMW
            <option value="Mercedes">Mercedes
            <option value="Volvo">Volvo
        </select>
        <script>
            function myFunction() {
                var x = document.getElementById("mySelect").value;
                alert(x);
            }
        </script>
    </body>
</html>

第一次选择any care eg:Audi,然后提示Audi,提示后再次选择Audi则没有提示出现。有人可以帮我看看这有什么问题吗?

【问题讨论】:

  • 似乎在这里工作正常.. jsfiddle.net/s2n15ydo
  • 选择BMW显示警报,再次选择BMW然后观察?
  • @AbdulJabbar,你明白我想说的吗?
  • 您是否希望它在每次选择某个值时触发......即使它已经被选中?
  • @AbdulJabbar,绝对是的

标签: javascript html drop-down-menu


【解决方案1】:

由于您选择了相同的选项 TWICE,所以 selectedDropdown 对象没有变化。

像下面这样试试

更新答案

var dd = document.getElementById('mySelect');          
var storeLstSlct = document.getElementById('checkIndx');
var slctdValue = '';   

if(dd.selectedIndex == 0)
{
    return false;
}else if(storeLstSlct.value == dd.options[dd.selectedIndex].value)
{              
    storeLstSlct.value = 'garbage'; 
    return false;              
}else
{                            
    slctdValue = dd.options[dd.selectedIndex].value;    
  alert(slctdValue); 
    storeLstSlct.value = slctdValue;              
}

小提琴是HERE

【讨论】:

  • Usman,根据我的要求,我只需要使用 html 和 javascript。你能帮我改一下吗?
  • 谁说他在用jquery?不要在没有调用的情况下包含它。
  • @GangadharB .. 有什么方法可以使用 JQuery 吗??
  • @Usman,问题出在 Onchange 上。是否有替换它的选项?
  • @Usman,你检查过奥迪选项,不工作。除了一切都很好。
【解决方案2】:

当您尝试选择已选择的项目时,该事件为 onchange,更改事件不会触发。

【讨论】:

  • 那么用 html 和 javascript 的另一种方法是什么?
  • 这如何回答这个问题?
【解决方案3】:

你在找this??

添加以下代码

    $('option').click(function(){  
       alert($(this).text());
    });

不幸的是,上述方法在“Chrome”中不起作用,请在“Internet Explorer”或“Mozialla”中尝试(至少为此原因使用了IE:p)

【讨论】:

    【解决方案4】:

    您忘记关闭选项标签,为此您需要将 onclick 事件处理程序附加到下拉列表中的所有选项,见下文:

    var x = document.getElementById("mySelect");
    
    //attach onclick event handlers to options
    for (var i = 0; i < x.options.length; i++) 
    {
      if (x.options[i].addEventListener) 
      { 
        /*all other browsers*/
        x.options[i].addEventListener("click", function() {mysFunction(this)}, false);
      } 
      else if (x.options[i].attachEvent) /*ie < 9*/ 
      {
        x.options[i].attachEvent("click", function() {mysFunction(this)});
      }
    }
    
    //execute my alert box on item select
    function mysFunction(elem) {
      alert(elem.value);
    }
    <select id="mySelect">
      <option value="Audi">Audi</option>
      <option value="BMW">BMW</option>
      <option value="Mercedes">Mercedes</option>
      <option value="Volvo">Volvo</option>
    </select>

    【讨论】:

    • 这不是问题,先生
    • @RobinVanPersi 编辑后的答案也没有解决 OP 的问题。
    • @AwalGarg - 你有没有费心测试脚本?你甚至费心阅读这个问题吗?请重新阅读问题,看看这个解决方案是否解决了问题。从我的角度来看,它有效并且解决了问题
    • @GangadharB - 我刚刚对其进行了测试,并且它从我的末端开始工作。我正在使用 FF v33
    • @RobinVanPersi,选择Mercedez,然后在警报后再次选择Merce,然后观察
    【解决方案5】:

    更新演示: http://jsbin.com/hujavalayu/1/edit

    我希望这能满足您的要求,请检查链接

    Trigger the event when selected the same value in dropdown?

    <p>Select a new car from the list.</p>
    <select id="ddList" onClick="onSelect()">
        <option value="0">Select Me</option>
        <option value="List1">List1</option>
        <option value="List2">List2</option>
        <option value="List3">List3</option>
    </select>
    
    
    <script>
        var prevIndex = "";
    
        function onSelect() {
            var currIndex = document.getElementById("ddList").selectedIndex;
            if (currIndex > 0) {
                if (prevIndex != currIndex) {
                    alert("Selected Value = " + document.getElementById("ddList").value);
                    prevIndex = currIndex;
                } else {
                    prevIndex = "";
                }
            }
        }
    </script>
    

    【讨论】:

      【解决方案6】:

      您应该使用onclick="this.value=null" 并同时定义您的onchange, 因此,每次您选择任何选项时,它都会清除所选项目,您可以再次选择相同的选项;)。 这是示例代码:

      $serial_no = 0;
      
      <select id="<?php echo $serial_no++; ?>" onclick="this.value=null" onchange="update_value(this.value,this.id)" class="form-control" required>
        <option><?php echo $row['card']; ?></option>
        <option>---------</option>
        <option>Pending</option>
        <option>Deliver</option>
      </select>
      
      update_value(item){
        alert(item);
      }
      

      【讨论】:

        猜你喜欢
        • 2016-11-21
        • 2014-10-12
        • 2019-05-17
        • 1970-01-01
        • 1970-01-01
        • 2021-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多