我正在尝试为多选列表框编写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个列表框(任意数量的项目)。
我该怎么做?
答案 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;
}