我正在尝试使用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>
答案 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;
}
}
}
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
}
}
}
因此,您可以看到,如果您将标签放在标签而不是选项中,验证会更简单。