0

我正在尝试为多选列表框编写一个 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 个值,否则不允许保存表单。

但是我需要检查是否应该选择至少 1 个列表框(任意数量的项目)。

我怎样才能做到这一点?

4

5 回答 5

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
 }

编辑:

您可以通过执行以下操作来采用快乐路径方法:

 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
  }
于 2012-11-07T02:38:27.677 回答
1

有一个更简单的方法来做到这一点:

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

如果我的列表框中没有选定的元素,则selected_index将返回-1 ,这是因为我们知道列表框中的项目索引从 0 到 (n) ,所以如果没有选择,则将其设置为-1是有意义的 剩下的取决于你

于 2015-01-25T07:49:05.750 回答
0

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

使用条件,它的工作方式不同,即如果未选择任何框||,它将设置显示的消息。

记住,对于||false|| true|| false|| false ->> true 对于&&false && true && false && false ->> false

在您的情况下,例如,选择了一个选择框,然后因为false|| true|| false|| false ->> true,它仍然会进入if您不想要的内部。相反,如果没有选择所有选择框,您想在里面输入,即true && true && true && true --> true

于 2012-11-07T02:32:07.277 回答
0

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

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

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

我相信 JS 仅用于 UI 验证,但想检查是否有一种方法可以通过与数据库值进行比较来进行验证?

于 2012-11-07T03:15:11.033 回答
0

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

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

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

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

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

function checkSelects(form, names) {
  var i = names.length;
  while (i--) {
    if (form[names[i].selectedIndex) {
      return true;
    }
  }
  return false;
}
于 2012-11-07T03:25:46.983 回答