如何使select数组为空

How to get select array empty

本文关键字:数组 select 何使      更新时间:2023-11-02

我的选择选项属性的名称是动态填充的。

在提交我的表格时,我需要知道我是否所有的选择都已填写。。。

我该怎么做?

我还想把鼠标光标移到未填充的选择。

 <script type="text/javascript" src="js/jquery-1.6.4.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#teste").click(function () {

                a = $("select[name='sel[]'] option:selected").length;
                alert(a);
            });
        });
    </script>
<title>
</title>
</head>
    <form>
        <select name="sel[0]">
            <option value="teste"></option>
            <option value="teste">1234</option>
            <option value="teste">1234</option>
            <option value="teste">1234</option>
        </select>
        <br />
        <br />
        <br />
        <select name="sel[1]">
            <option value="teste"></option>
            <option value="teste">1234</option>
            <option value="teste">1234</option>
            <option value="teste">1234</option>
        </select>
        ... Many others 
        <input type="button" id="teste" value="TESTAR">
    </form>
</html>

给默认选项一个值-1,并为这些选项提供一个通用类名(属性以选择器开头是有效的)。

尝试:

HTML:

<form>
    <select name="sel[0]" class="sel">
        <option value="-1"></option>
        <option value="teste">1234</option>
        <option value="teste">1234</option>
        <option value="teste">1234</option>
    </select>
    <br />
    <br />
    <br />
    <select name="sel[1]" class="sel">
        <option value="-1"></option>
        <option value="teste">1234</option>
        <option value="teste">1234</option>
        <option value="teste">1234</option>
    </select>
    <input type="button" id="teste" value="TESTAR">

JS:

$(document).ready(function () {
      $("#teste").click(function () {
          $(".sel").each(function () {
              if (this.value == -1) { //If you are not providing value check for this.selectedIndex == 0
                  $(this).focus(); //set the focus
                  return false; //and break out of the loop
             }
          });
      });
  });

Fiddle

您必须像这样设置变量var a;

select[name='sel[]']没有元素,你有一个数字在里面,你可以用name*=name^=分别说名称contains或名称starts with sel

JSFIDDLE演示

$("#teste").click(function () {
    var a = $("select[name^='sel'] option:selected");
    var count = 0;
    $.each(a, function () {
        if ($(this).text().length) {
            count++;
        }
    });
    alert(count);
});

Select在提交表单时与通常的输入类似。因此,您可以找到空值的Select:

$("select[value=]").first().focus()

或者遍历所有表单元素,检查其值和类型。

http://jsbin.com/UduNaGOh/1/edit?html,输出

  $(document).ready(function () {
    $("#teste").click(function () {
      var test = true;     
      $("#myform select").each(function(){ 
        var select = $(this);
        if(select.val() == 'none') {
          select.addClass('fail');
          select.focus();
          test = false;
        } else {
          select.removeClass('fail');
        }
      });
      if(test){
        alert('well done');
        $("#myform select").removeClass('fail');
        // do your send stuff ...
      }
    });
  });

我正在更改类以设置空选择的样式。这里是css:

#myform > select.fail { background: red }

如果你只需要空选择的数量,你可以使用:

$('select:has(option[value="none"]:selected)').length