如何检查是否选择了4个列表框中的1个中的至少一个项目

时间:2012-11-07 02:30:31

标签: javascript validation

我正在尝试为多选列表框编写JS验证函数。

我有4个多选列表框,我需要检查用户是否从至少一个列表框值中选择了。也就是说,在4个列表框中,用户应该从至少1个列表框中选择(任意数量的值)。

这是我写的功能,

function validate(form)
{
    if ((document.getElementById("A").value=='') || (document.getElementById("B").value=='') || (document.getElementById("C").value=='') || (document.getElementById("D").value=='')) 
    {                                           
        if (0 < message.length) { message += "\n"; }
        message += "You must select atleast one of the listbox items ";

    }
}

我知道问题出在OR条件上。它不允许保存表单,除非选择了每个这些列表框中的1个值。

但是我需要选中最少4个列表框(任意数量的项目)。

我该怎么做?

5 个答案:

答案 0 :(得分:1)

您需要更改为使用AND条件,这将是适当的悲伤路径方法:

if (document.getElementById("A").value == '' && 
    document.getElementById("B").value == '' && 
    document.getElementById("C").value == '' && 
    document.getElementById("D").value == '') {

    //then they didn't select AT LEAST ONE item
 }
 else {       
    //they did pick at least one
 }

编辑:

您可以通过以下方式采用Happy Path方法:

 if (document.getElementById("A").value !='' || 
     document.getElementById("B").value !='' || 
     document.getElementById("C").value !='' || 
     document.getElementById("D").value !='') {

     //then they did select AT LEAST ONE item
  }
  else {       
     //they didn't pick at least one
  }

答案 1 :(得分:1)

有一种更简单的方法:

element = document.getElementById("myid");
selected_index = element.selectedIndex;

如果我的列表框中没有选定元素,那么 selected_index 将返回 -1 这是因为我们知道列表框中的项目索引从<0>变为(n),所以如果没有选择,那么将它们置于 -1 是有道理的 其余的由你决定

答案 2 :(得分:0)

您需要使用&&运算符,这意味着,如果未选择所有四个运算符,则您需要显示该消息。

使用||条件时,它的工作方式不同,即如果未选中任何框,则会将消息设置为

请记住,对于||false|| true|| false|| false ->> true 以及&&false && true && false && false ->> false

在您的情况下,例如,选择一个选择框,然后从false|| true|| false|| false ->> true开始,它仍会进入您不想要的if内。相反,如果未选择所有选择框,您希望进入内部,即true && true && true && true --> true

答案 3 :(得分:0)

继续验证...我有一个文本字段,在数据库中设置为唯一。 我编写了一个Java函数,通过与数据库值进行比较来检查字段是否唯一。

现在我的验证在servlet中工作正常,并且用户被提示使用新屏幕。

有没有办法可以使用java函数弹出警报,就像我们在java脚本中进行UI验证一样?

我认为JS仅用于UI验证,但想通过与数据库值进行比较来检查是否有办法验证?

答案 4 :(得分:0)

请注意,如果所选选项没有值属性,则选择元素的值在IE中可能为“”。最好检查select元素的 selectedIndex 属性。

此外,如果没有选项具有所选属性,则某些浏览器可能默认选择第一个选项而其他浏览器可能不选择,因此 selectedIndex 可能为0或-1,没有用户输入。一个强大的策略是始终将一个选项(通常是第一个)设置为默认选择选项。

如果默认值始终是第一个选项,并且所有选择元素都有ID属性,则可以执行以下操作:

function checkSelects(ids) {
  var i = ids.length;
  while (i--) {
    if (document.getElementById(ids[i]).selectedIndex) {
      return true;
    }
  }
  return false;
}

请注意,如果select元素具有名称(必须在表单中成功),您还可以执行以下操作:

function checkSelects(form, names) {
  var i = names.length;
  while (i--) {
    if (form[names[i].selectedIndex) {
      return true;
    }
  }
  return false;
}