使用JavaScript验证多选框不是空的

时间:2014-05-05 00:05:53

标签: javascript html

我正在尝试使用JavaScript来验证多个选择框不为空。下面是我在所有其他输入框上使用的代码(在字段名称中没有[])。

<script type="text/javascript">
function validateForm()
{
var x=document.forms["escalations"]["SupportGroup[]"].value;
 if (x==null || x=="" || x=="---< Select Delivery Team >---")
   {
   alert("Please select a Support Group.");
   return false;
   }
}
</script>

它适用于单输入但是当我为多个添加“[]”时,它会在选择或不选择选项时发出警报。有任何想法吗?感谢。

html代码是

 <form name="escalations" onsubmit="return validateForm()" action="submitescalation.php?SM=SN" method="post" enctype="multipart/form-data">
 <select id="s0" multiple="multiple" name="SupportGroup[]" onchange="GetCompany();GetTitle();GetContact();" style="height: 25px">
 <option>Company1</option><option>Company2</option><option> Company3</option></select>
 </form>

3 个答案:

答案 0 :(得分:1)

这应该可以用来获取第一个选项的文本:

var x=document.forms["escalations"]["SupportGroup[] option:selected"].eq(0).text();

或者这样可以获得所选第一个选项的值

var x=document.forms["escalations"]["SupportGroup[] option:selected"].eq(0).val();

答案 1 :(得分:0)

也许是这样的:

function validateForm()
{
//var x=document.forms["escalations"]["SupportGroup"].value;
   selects= document.getElementsByTagName('select');
    for(i=0;i<selects.length;i++){
        x=selects[i].value;
 if (x==null || x=="" || x=="---< Select Delivery Team >---")
   {
   alert("Please select a Support Group.");
   return false;
   }
    }
}

http://jsfiddle.net/3qSpv/1/

P.S。如果我理解正确 - 您在页面上有多个具有相同名称的选择框(并且您将值作为数组发送到服务器端脚本)?

答案 2 :(得分:0)

据推测,第一个选项的值为“---&lt; Select Delivery Team&gt; ---”。这应该是标签的一部分,而不是其中一个选项。

如果删除了第一个选项,则只需使用选定的索引属性即可查看是否选择了某个选项。在多个选择中, selectedIndex 将是第一个选定选项的索引。因此,您只需检查它是否为0或更高(如果未选择任何选项,则为-1):

if (document.forms["escalations"]["SupportGroup[]"].selectedIndex >= 0) {
  // an option other than the first has been selected
}

如果你坚持使用第一个选项作为标签,那么你需要做更多的工作,大概是为了确保第一个选项没有被选中,而另一个选项是:

var select =  document.forms["escalations"];
var options = ["SupportGroup[]"].options;

if (select.selectedIndex > 1) {
  // an option other than the first has been selected
  // can end validation here
}

if (select.selectedIndex == 0) {
  // The first option is selected, tell the user to not select it? 

  // See if any other option is selected, start from second
  for (var i=1, iLen=options.length; i<iLen; i++) {

    if (options[i].selected) {
      // an option other than the first has been selected
    }
  }
}

因此,您可以看到,如果您将标签放在标签而不是选项中,验证会更简单。