如何检查是否在JavaScript中选择了任何选项

时间:2016-11-21 14:33:25

标签: javascript html dom javascript-events

如何检查是否选择了这三个项目中的任何一个。我有两个选项列表看起来像这样

  <div class="fruits">
        <select>
            <option>apple</option>
            <option>orange</option>
            <option>banana</option>
            <option>hello</option>
            <option>Bye</option>
        <select>
    </div>

   <div id="criteria">
        <select>
            <option>fruits</option>
            <option>in season</option>
            <option>expensive</option>
        </select>
    </div>

如果未选择apple,orange,banana这三个选项中的任何一个,我想让“条件”Id选项只读。可以选择“水果”类中的多个选项。用户可以选择苹果或你好,你好或再见,苹果和香蕉。

可能的逻辑是什么。我试过很少接近像用苹果,橙子和香蕉维护一个带有对象的对象,并且值是他们的点击次数,如果count是所有键的0,那么我会隐藏另一个选项标签。

我也尝试了其他方法。 这个代码在这里:

<script>
    var count = 0; 
    fruitsList  = document.getElementsByClassName("fruits"); 
    var countObj = {
            apple: 0,
            orange:0,
            banana:0, 
        }   
    for(var i = 0; i<= fruitsList.length-1 ; i++ ){
        fruitsList[i].addEventListener("click", function(){
        \* have to grab the value of the elements because the list of elements is generated by PHP and there will be plenty of elements *\
    var threeOption = this.getAttribute("value");
             if(fourOption == 'apple' || fourOption == 'orange' || fourOption == 'banana'){
    if(this.selected == true){
                    countObj[fourOption]++;
                    }
                else if(this.selected == false){
                    countObj[fourOption]--;
                }
                else{
                    countObj[fourOption]--;
                }
            }
    for (var key in countObj) {
                if (Object.prototype.hasOwnProperty.call(countObj, key)) {
                    var val = countObj[key];
                    if(val>0){
                        count = 1; 
                    }
                }
            }
    if(count==1){
                for(var i = 0 ; i<=5 ; i++){
                    document.querySelectorAll("#criteria option")[i].removeAttribute("disabled");
                    }
                }
           else{
       for(var i = 0 ; i<=5 ; i++){
    document.querySelectorAll("#criteria option")[i].setAttribute("disabled","true");
        }
       }
     });
    }
</script>

如果再次选择苹果,橙子或香蕉中的任何一个,则应重新出现这些选项,如果未选中,则应该只读取。 请提出一个逻辑。这是我第一次发帖提问。如果我在任何地方都弄错了,请告诉我,我很乐意将来纠正自己。         谢谢

2 个答案:

答案 0 :(得分:0)

您可能需要使用getComputedStyle

未经测试,但您可以试试这个

function setElement(){
// pass the element
window.onscroll = function(){scroll(element)};
}

function scroll(elem){
eHeight = window.getComputedStyle(elem,null).getPropertyValue("height");
        //Rest of the code
}

答案 1 :(得分:0)

我找到了答案。使用jQuery我能够获得当前选择,然后检查当前选择是否包含苹果,橙色或香蕉。 以下是JQuery API文档中相应函数的链接。

http://learn.jquery.com/using-jquery-core/faq/how-do-i-get-the-text-value-of-a-selected-option/