单击选择时如何更改选择的“大小”?

时间:2015-03-29 14:49:54

标签: javascript jquery html css

抱歉我的英语不好,我对select

有疑问
<form name="reg" style="width:700px;" action="#" method="post">
 <p align="center"> 
    <select onChange="reg(this.options[this.selectedIndex].value)" size="1">
        <option selected value="250">Select the Reg</option> 
        <option value="0">Reg 1</option>
        <option value="1">Reg 2</option>
        <option value="2">Reg 3</option>
        <option value="3">Reg 4</option>
        <option value="4">Reg 5</option>
        <option value="5">Reg 6</option>
        <option value="6">Reg 7</option>
        <option value="7">Reg 8</option>
        <option value="8">Reg 9</option>
        <option value="9">Reg 10</option>   
    </select>        
 </p>   
</form> 

我希望当我点击选择时,size="5"中选择更改的大小,因为当文档加载大小为size="1"时(这很好)但是如果我点击选择,它显示了所有十个选项,这就是问题...... 然而,如果我点击选择,尺寸变化,则是最美丽的。

修改 将来表单可能有250个选项,因此当文档加载大小 1 时,以及当我点击大小 5 时非常重要.... 仅当选择显示选项时,大小必须为“5”,并且当选择选项时,大小必须为1.

问题是我不知道是怎么做的,也许是用jquery?还是只用css?

你能帮助我吗?

谢谢!

5 个答案:

答案 0 :(得分:3)

以下是您的问题的可行解决方案:

  1. 将焦点事件处理程序添加到id ='selRegs'
  2. 的选择列表中
  3. 将size属性设置为6(5将显示4个选项+“Select the Reg”选项)
  4. 选项更改后,大小将重置为1
  5. 从选择中移除焦点
  6. https://jsfiddle.net/juaxo8zm/8/

    $(document).ready(function () {
                    var initPos = $("#yourDiv").position();
                    console.log("init: ");
                    console.log(initPos);
                    $('#selRegs').focus(function () {
                        $('#selRegs').attr("size", "6");
    
                        $("#yourDiv").css({
                            position: "absolute",
                            top: initPos.top,
                            left: initPos.left
                        });                    
                    });
                    $('#selRegs').change(function () {
                        console.log("selected");
    
                        $('#selRegs').attr("size", "1");
    
                        $("#selRegs").blur();
    
                        $("#yourDiv").css({
                            position: "static"
                        });
                    });
                });
    

    我使用jQuery:

    .change()

    .focus()

    .attr(param1, param2)

    .blur()

    .position()

答案 1 :(得分:0)

使用HTML onclick =&#34; myFunction()&#34;来自HTML select标记的事件标记,或者如果你想在javascript级别声明事件处理程序,则使用jQuery click()处理程序(我的意思是如果你想从javascript添加额外的事件)。 我的意思是你可以选择 - 在HTML标签源代码中添加额外的事件调度代码,或者从javascript / jQuery级别添加它。

问题是,onChange()事件调度不会被调用,直到您的需要为时已晚(在用户选择值之后它被称为)。

您需要在点击下拉菜单按钮时收到通知,以便您可以更改所选值(默认值)。

在您的点击函数处理程序中,更改selectedIndex属性并将其设置为包含&#34; 5&#34;

的行的索引

答案 2 :(得分:0)

您应该在选择

上使用点击事件
$('select').on('click',function(){
    $(this).attr('size',5) 
});

答案 3 :(得分:0)

试试这个:

<select size="1" 
    onfocus='this.size=5;' 
    onblur='this.size=1;' 
    onchange='this.size=1; this.blur();'
>

答案 4 :(得分:-1)

只需使用javascript:

<select id='sel' onfocus='changesize();' onchange='changesize2();' size='1'>
    <option selected value="250">Select the Reg</option>
    <option value="0">Reg 1</option>
    <option value="1">Reg 2</option>
    <option value="2">Reg 3</option>
    <option value="3">Reg 4</option>
    <option value="4">Reg 5</option>
    <option value="5">Reg 6</option>
    <option value="6">Reg 7</option>
    <option value="7">Reg 8</option>
    <option value="8">Reg 9</option>
    <option value="9">Reg 10</option> 
</select>

<script>
function changesize(){
    document.getElementById('sel').size = '5';
}
function changesize2(){
    document.getElementById('sel').size = '1';  
    document.getElementById('sel').blur();
}
</script>

演示:http://codepen.io/anon/pen/zxbRZb