<select multiple =“”>仅用于4个对象</select>

时间:2013-05-15 17:44:15

标签: html selection

这可能吗?只允许你选择4个对象,不使用javascript或php(或者你使用的serrver边语)?

如果我有类似的东西:

<select multiple>
    <option>cat</option>
    <option>hat</option>
    <option>sat</option>
    <option>fat</option>
    <option>brat</option>
</select>

我可以对它加以限制并说只能选择其中的4个吗?这是size=4派上用场的地方吗?

这是重复

1 个答案:

答案 0 :(得分:0)

不,如果不使用JavaScript,就无法强制执行此类限制。这样的事情可以奏效:

func = function(e) {
    e|e=window.event;
    var t = e.srcElement || e.target;
    if( !t.tagName) t = t.parentNode;
    if( t.tagName.toLowerCase() == "select" && t.hasAttribute("multiple") && t.hasAttribute("data-max")) {
        var o = t.options, l = o.length, i, m = +t.getAttribute("data-max");
        for( i=0; i<l; i++) {
            if( o[i].selected) {
                if(m>0) m--;
                else o[i].selected = false;
            }
        }
    }
};
if( document.body.addEventListener) document.body.addEventListener("change",func,false);
else document.body.attachEvent("onchange",func);

然后你可以使用这个HTML:

<select multiple data-max="4">

此外,您应该实现服务器端验证。假设这个HTML:

<select multiple name="test[]">

您可以使用此PHP:

$_POST['test'] = array_slice($_POST['test'],0,4); // adjust the 4 to whatever limit