【问题标题】:<select multiple> for only 4 objects [duplicate]<select multiple> 仅适用于 4 个对象 [重复]
【发布时间】:2013-05-15 17:44:15
【问题描述】:

这可能吗?只允许您选择 4 个对象,而不使用 javascript 或 php(或您使用的任何服务器端语言)?

如果我有类似的东西:

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

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

不是重复的

【问题讨论】:

  • 我想不出没有 js 或 php 的任何 html 代码。
  • 用 jquery 最简单的方法是什么? @user927258

标签: html selection


【解决方案1】:

不,如果不使用 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

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 2017-09-13
    • 2022-11-09
    相关资源
    最近更新 更多