Javascript 如何在multiselect中禁用移动浏览器中select onchange事件的选项

Javascript 如何在multiselect中禁用移动浏览器中select onchange事件的选项,javascript,dom,Javascript,Dom,我需要有一个multiple-select标记,并在onchange事件触发时禁用一些选择,因为可能的选择量是有限的 基本代码如下: <script type="text/javascript"> function selectionChange(selection) { selection.options[0].disabled = true; } </script> <select multiple="multiple" onch

我需要有一个multiple-select标记,并在onchange事件触发时禁用一些选择,因为可能的选择量是有限的

基本代码如下:

<script type="text/javascript">
    function selectionChange(selection) {
        selection.options[0].disabled = true;
    }
</script>
<select multiple="multiple" onchange="selectionChange(this)">
    <option>Option #1</option>
    <option>Option #2</option>
    <option>Option #3</option>
    <option>Option #4</option>
    <option>Option #5</option>
</select>

功能选择更改(选择){
selection.options[0]。disabled=true;
}
选项1
选项2
选项3
选项4
选项5
你看不到什么特别的东西,在桌面浏览器中,它的工作方式很有魅力。问题在于移动浏览器

例如,在安卓系统中,onchange只有在按下OK后才会启动。

现在奇怪的是,在iOS Safari中,当我使用
alret()
时,警报将触发,但选择项将保持启用状态,直到我按下“完成”并再次打开选择按钮。然而,在Android中,只有按下OK,警报才会触发


我花了好几天的时间在这里寻找解决方案,我开始认为这在移动浏览器中是无法实现的,但我也没有找到任何关于这方面的参考资料

也许你可以尝试类似的方法:

<script type="text/javascript">
    function selectionClicked(selection) {
        // Check if any option was selected
        if(selection.value) {
            selection.options[0].disabled = true;
        }
    }
</script>
<select multiple="multiple" onclick="selectionClicked(this)">
    <option>Option #1</option>
    <option>Option #2</option>
    <option>Option #3</option>
    <option>Option #4</option>
    <option>Option #5</option>
</select>

功能选择单击(选择){
//检查是否选择了任何选项
if(selection.value){
selection.options[0]。disabled=true;
}
}
选项1
选项2
选项3
选项4
选项5


功能选择单击(选择){
//检查是否选择了任何选项

对于(var i=0;iNo),这些函数的作用与我的原始函数相同,它们确实会将选项更改为禁用,但只有在选择完成时,而不是在选择打开时,我才需要
<script type="text/javascript">
    function selectionClicked(selection) {
        // Check if any option was selected
        for(var i=0; i<selection.options.length; i++) {
            if(selection.options[i].selected) {
                selection.options[0].disabled = true;
                break;
            }
        }
    }
</script>