多个和单个选择/组合框的逻辑

Logic for multiple and single select/combo boxes

本文关键字:组合 单个 选择      更新时间:2024-05-11

下面是我的代码:

<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<script type="text/javascript">
var flag = false;
function test(selObject)
{
    alert("hi");
    var form = document.forms[0];
    alert("form"+form);
    var txtS =  form["city"];
    alert("txt"+txtS);
    var len = txtS.length;
    alert("len"+len);
    for(var i=0; i<len; i++) 
    {
        if (selObject == txtS[i] )
        {
            if(txtS[i].value==txtS[i].options[3].value)
            {
                alert("YOU ARE SELECTING MYSORE CITY");
                flag = true;
            }
            
            if(!txtS[i].options[3].selected && flag)
            {
                var result = confirm("Are you sure you wnat to travel to this city");
                if(result)
                {
                    flag = false;
                }
                else
                {
                    txtS[i].options[txtS[i].options.selectedIndex].selected=false;
                    txtS[i].options[4].selected=true;
                }
            }
        }
    }//end of for loop
}
</script>
<html:form action="/login">
    username:<input type="text" name="username" /></br>
    password:<input type="password" name="password"/></br>
    
    <%
    for(int i = 0; i < 10; i++){
    %>
        <html:select property="city" onchange="javascript:test(this);">
            <html:option value="B">BANGALORE</html:option>
            <html:option value="C">CHENNAI</html:option>
            <html:option value="M">MANGALORE</html:option>
            <html:option value="MR">MYSORE</html:option>
        </html:select></br>
    <%
    }
    %>
    <input type="submit" value="submit"/>
</html:form>

当选择框或组合框循环十次时,我会将form["city"]的长度正确地设置为10,并且alerts在组合框内的行为是适当的,但如果我有一个选择框,则不会将form["city"]的长度设置为1,而是将其设为4,这是我的下拉框中option元素的数量。

所以我的逻辑在这里不起作用。

我如何使它同时适用于单个和多个组合框/选择框。

如有任何帮助,我们将不胜感激。

请使用像jQuery这样的javascript库来实现跨浏览器兼容性。

您可以使用以下代码来确定是否只存在单个选择元素或存在具有相同名称的多个选择元素:

if (selObject == txtS) {
    alert("Single select");
    // ... your logic for a single combo-box follows after this
} else {
    // your logic for multiple combo-box follows, like the "for" loop and if-else
}

当只有一个选择框时,行var txtS = form["city"];将返回该选择框内的选项元素数组,而当多个具有相同名称的选择框时则返回选择框数组。

希望这能有所帮助。

与您的问题无关,但此逻辑if(!txtS[i].options[3].selected && flag)将始终返回false