jquery 如何限制在html选择框中选择的选项?

bq3bfh9z  于 2023-01-30  发布在  jQuery
关注(0)|答案(9)|浏览(212)

我在一个表单中使用了一个select标签,它允许多个选项,但是我希望最多可以选择10个选项。使用javascript或jquery可以吗?
先谢了!

eivnm1vs

eivnm1vs1#

这里有一些完整的代码供您使用...一定会喜欢谷歌 AJAX APIPlayground:-)

**编辑1:**注意:这只允许你选择5个,因为我不想复制/粘贴另外10个选项:-)

<!--
  copyright (c) 2009 Google inc.

  You are free to copy and use this sample.
  License can be found here: http://code.google.com/apis/ajaxsearch/faq/#license
-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Sample Select Maximum with jQuery</title>
    <script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q">    </script>
    <script type="text/javascript">
    google.load("jquery", "1");

    $(document).ready(function() {

      var last_valid_selection = null;

      $('#testbox').change(function(event) {
        if ($(this).val().length > 5) {
          alert('You can only choose 5!');
          $(this).val(last_valid_selection);
        } else {
          last_valid_selection = $(this).val();
        }
      });
    });
    </script>
  </head>
  <body style="font-family: Arial;border: 0 none;">
    <select multiple id='testbox'>
      <option value='1'>First Option</option>
      <option value='2'>Second Option</option>
      <option value='3'>Third Option</option>
      <option value='4'>Fourth Option</option>
      <option value='5'>Fifth Option</option>
      <option value='6'>Sixth Option</option>
      <option value='7'>Seventh Option</option>
      <option value='8'>Eighth Option</option>
      <option value='9'>Ninth Option</option>
      <option value='10'>Tenth Option</option>
    </select>
  </body>
</html>

**一个

n3ipq98p

n3ipq98p2#

这将用户限制为3个选项:

$("select").on("click", "option", function () {
    if ( 3 <= $(this).siblings(":selected").length ) {
        $(this).removeAttr("selected");
    }
});​​​​​​​​​​

小提琴:http://jsfiddle.net/2GrYk/

doinxwow

doinxwow3#

此答案适用于以下情况:

  • 正常咔哒声
  • 仅鼠标按下(鼠标在鼠标释放前向外移动)
  • 键盘
  • 如果有相同值的不同选项

代码:

$('#mySelect').on('change', function() {
    if (this.selectedOptions.length < 4) {
        $(this).find(':selected').addClass('selected');
        $(this).find(':not(:selected)').removeClass('selected');
    }else
        $(this)
        .find(':selected:not(.selected)')
        .prop('selected', false);
});

Demo
或者,对于不支持selectedOptions的旧浏览器,

$('#mySelect').on('change', function() {
    var $sel = $(this).find(':selected');
    if ($sel.length < 4) {
        $sel.addClass('selected');
        $(this).find(':not(:selected)').removeClass('selected');
    }else
        $(this)
        .find(':selected:not(.selected)')
        .prop('selected', false);
});

Demo

41ik7eoe

41ik7eoe4#

使用jQuery,你可以给change事件附加一个函数,因为它是一个多选,所以瓦尔()将是一个数组。你可以检查数组的长度,如果它是预定义的大小,你可以做一些事情。下面的代码演示了你如何知道有多少项被选中。

$("#select").change(function(){
        alert($(this).val().length);
  });
gblwokeq

gblwokeq5#

tigured it out!下面是生成的代码:

$(document).ready(function(){

var last_valid_selection = null;
var selected = "";

$("#recipient_userid").change(function(event){

    if ($(this).val().length > 10) {

        alert('You can only choose 10!');
        $(this).val(last_valid_selection);

    } else {

        last_valid_selection = $("#recipient_userid").val();

        $("#recipient_userid option:selected").each(function () {
            selected += "<li>" + $(this).text() + "</li>";
        });

        $("#currentlySelected").html(selected);
        selected = "";
    }

}).change();
});

谢谢你们的帮助!

kx1ctssn

kx1ctssn6#

我基本上合并了几个提供的答案,使一些特定的特定ID:

$("#mySelect").on("click", "option", function(){
    var max = 3;
    if ( max <= $(this).siblings(":selected").length ) {
        alert("Only " + max + " selections allowed.");
        $(this).removeAttr("selected");
    }
});

罗伯

2lpgd968

2lpgd9687#

您可以使用jQuery

$("select").change(function () {
      if($("select option:selected").length > 3) {
          //your code here
      }
  });
lndjwyie

lndjwyie8#

瞧!不需要杰奎琳了。

var is = 0;
    for (var i = 0; i < selectCountryCode.length; i++) {
        if (selectCountryCode.options[i].selected) {
            is++;
        }
        if (is > 3) {
            selectCountryCode.options[i].selected = false;              
        }
    }

吉鲁山

eit6fx6z

eit6fx6z9#

下面是一个基于jilu示例的纯JavaScript示例。

const selectEls = document.querySelectorAll('select[multiple]');

selectEls.forEach((selectEl) => {
    selectEl.addEventListener('change', (e) => {

        const currentEl = e.currentTarget;

        let is = 0;
        for (let i = 0; i < currentEl.length; i++) {
            if (currentEl.options[i].selected) {
                is++;
            }
            if (is > 3) { // if you want more than 3 selected options, change the number here
                currentEl.options[i].selected = false;
            }
        }

    })
});

相关问题