Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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_Jquery - Fatal编程技术网

Javascript 在下拉列表中选择相同值时触发事件?

Javascript 在下拉列表中选择相同值时触发事件?,javascript,jquery,Javascript,Jquery,问题:我有一个下拉列表,其中列出了年份,没有选择任何内容,用户选择“1976”,我运行一个函数。如果用户再次单击下拉列表并再次选择“1976”,我想再次运行该函数 $('select').on('change', function (e) { var optionSelected = $("option:selected", this); var valueSelected = this.value; alert(valueSelected); }); 这一基本思想应该在使用j

问题:我有一个下拉列表,其中列出了年份,没有选择任何内容,用户选择“1976”,我运行一个函数。如果用户再次单击下拉列表并再次选择“1976”,我想再次运行该函数

$('select').on('change', function (e) 
{
var optionSelected = $("option:selected", this);
var valueSelected = this.value; 
alert(valueSelected);      
});

这一基本思想应该在使用jQuery和click事件时起作用:

$('#yourselect').click(function() {
  console.log("your function");
});

一个简单的if语句可以防止在最初单击select元素时触发函数。

mouseup事件应该可以做到这一点:

$('select').mouseup(function(){
    console.log("hue");
});


请注意,当在列表框中选择新值时,这将触发两次。一次是在打开选项时,一次是在选择选项时。

我能想到的最接近您的功能是:

-HTML-

<select class="opt-evt">
    <option value="" selected="selected"></option>
    <option value="1976">1976</option>
</select>
需要注意的是,如果用户再次选择“1976”,则只会在模糊时触发所需的事件

简单JS
---------
var prevIndex=“”;
函数onSelect()
{
var currendex=document.getElementById(“ddList”)。selectedIndex;
如果(当前索引>0)
{
如果(prevIndex!=当前索引)
{
警报(“选定索引=”+当前索引);
prevIndex=CurrendIndex;
}
其他的
{
prevIndex=“”;
}
}
}
选择我
清单1
清单2
清单3
我已经修复了以下问题

<html>
<head>
<script>
function onSelect()
{
    var dd = document.getElementById('ddList');
    var txtTerms = document.getElementById('selValue');            
    var storeLstSlct = document.getElementById('checkIndx');
    var slctdValue = '';   

    if(dd.selectedIndex == 0)
    {
        return false;
    }else if(storeLstSlct.value == dd.options[dd.selectedIndex].value)
    {              
        storeLstSlct.value = 'abcd'; 
        return false;              
    }else
    {                            
        slctdValue = dd.options[dd.selectedIndex].value;    
        if(txtTerms.value != '')                     
            txtTerms.value = txtTerms.value + ' , ' + slctdValue;
        else
            txtTerms.value = slctdValue;  
        storeLstSlct.value = slctdValue;              
    }
}

</script>

</head>
<body>
<select id='ddList' onclick='onSelect()'>
<option value='0'>Select Me</option>
<option value='One'>List1</option>
<option value='Two'>List2</option>
<option value='Three'>List3</option>
</select>
<input type='hidden' name='checkIndx' id='checkIndx' />
<input type='text' name='selValue' id='selValue' />
</body>
</html>

函数onSelect()
{
var dd=document.getElementById('ddList');
var txtTerms=document.getElementById('selValue');
var storeLstSlct=document.getElementById('checkIndx');
var slctdValue='';
如果(dd.selectedIndex==0)
{
返回false;
}else if(storelstlct.value==dd.options[dd.selectedIndex].value)
{              
storelstlct.value='abcd';
返回false;
}否则
{                            
slctdValue=dd.options[dd.selectedIndex].value;
如果(txtTerms.value!='')
txtTerms.value=txtTerms.value+','+slctdValue;
其他的
txtTerms.value=slctdValue;
storelstlct.value=slctdValue;
}
}
选择我
清单1
清单2
清单3

如果用户选择相同的值,则不会再次触发更改。当再次选择相同的值时,这就是Requiremick事件的工作方式如果用户第二次更改该怎么办?我认为答案需要处理bothAFAIK。当选择下拉菜单关闭时,没有触发的一般事件。@David我同意。也许问题在于UI的设计?谢谢Prabathi,我已经完成了隐藏元素的设计。也请检查我的答案。
Simple JS
---------

<html>
<head>
<script>
var prevIndex = "";

function onSelect()
{
    var currIndex = document.getElementById("ddList").selectedIndex;
    if( currIndex > 0 )
    {
        if( prevIndex != currIndex )
        {
            alert("Selected Index = " + currIndex);
            prevIndex = currIndex;
        }
        else
        {
            prevIndex = "";
        }
    }
}
</script>
</head>
<body>
    <select id="ddList" onClick="onSelect()">
        <option value="0">Select Me</option>
        <option value="1">List1</option>
        <option value="2">List2</option>
        <option value="3">List3</option>
    </select>
</body>
</html>
<html>
<head>
<script>
function onSelect()
{
    var dd = document.getElementById('ddList');
    var txtTerms = document.getElementById('selValue');            
    var storeLstSlct = document.getElementById('checkIndx');
    var slctdValue = '';   

    if(dd.selectedIndex == 0)
    {
        return false;
    }else if(storeLstSlct.value == dd.options[dd.selectedIndex].value)
    {              
        storeLstSlct.value = 'abcd'; 
        return false;              
    }else
    {                            
        slctdValue = dd.options[dd.selectedIndex].value;    
        if(txtTerms.value != '')                     
            txtTerms.value = txtTerms.value + ' , ' + slctdValue;
        else
            txtTerms.value = slctdValue;  
        storeLstSlct.value = slctdValue;              
    }
}

</script>

</head>
<body>
<select id='ddList' onclick='onSelect()'>
<option value='0'>Select Me</option>
<option value='One'>List1</option>
<option value='Two'>List2</option>
<option value='Three'>List3</option>
</select>
<input type='hidden' name='checkIndx' id='checkIndx' />
<input type='text' name='selValue' id='selValue' />
</body>
</html>