如何要求用户将下拉值设置为“请选择”以外的其他内容?

时间:2016-03-21 18:30:51

标签: jquery jsp

在提交此JSP时,应要求用户选择“请选择”之外的其他内容。如果用户选择“请选择”并提交表单,则应通过弹出窗口提醒用户他们应该更改字段。

<td class="normalTD" nowrap class="alignLeft" width="16%">
<form:select class="requiredAttr" path="detail[${loop.index}].cd" cssClass="fotnStyle" id="cd" >
<form:option value="">Please Select</form:option>
    <c:forEach var="list" items="${override.list}">
        <c:choose>
        <c:when test="${override.listne null}">
            <c:choose>
            <c:when test="${list.listCd eq detail.cd}">
                <c:set var="selectStatus" value="SELECTED" />
            </c:when>
            <c:otherwise>
                <c:set var="selectStatus" value="" />
            </c:otherwise>
            </c:choose>
        </c:when>
        </c:choose>
        <option value="${list.listCd}" ${selectStatus}>
        <c:out value="${list.desc}" />
        </option>
    </c:forEach>
</form:select>
</td>

我使用了以下jQuery代码段,它可以正常警告用户文本框未填充,但不会影响下拉列表。

function validate(){
    $(".requiredAttr").each(function(){
    if($(this).val().length < 1 || $(this).val() == ""){
        alert("Please fill in all the required fields.");
        $(this).focus();
        return false;

    }else{
        return true;
    }
    });
    return false;
}

这是生成的HTML。

<td class="normalTD" nowrap class="alignLeft" width="16%">
<select id="cd" name="detail[0].cd" class="fotnStyle" class="requiredAttr">
    <option value="">Please Select</option>         
    <option value="1" >A</option>
    <option value="2" >B</option>                                               
    <option value="3" >C</option>                                                   
    <option value="4" >D</option>                                               
</select>
</td>

2 个答案:

答案 0 :(得分:1)

只需获取选定的下拉索引,如果为零,则不选择任何值

if($("#cd").prop('selectedIndex') === 0) {
    alert(...);
}

OR

if($("#cd")[0].selectedIndex === 0) {
    alert(...);
}

相关帖子:

OR

你可以获得所选选项的值,如果它是空的,则提示选择一个值。

if($("#cd").val() === "") {
    alert(...);
}

相关帖子:

答案 1 :(得分:1)

您的逻辑是正确的,但您不需要值的长度。对值等于空的简单检查可以完成这项工作。

function validate()
{
    $(".requiredAttr").each(function(){
    if($.trim($(this).val()) == ""){
        alert("Please fill in all the required fields.");
        $(this).focus();
        return false;

    }else{
        return true;
    }
    });
    return false;
}

示例:https://jsfiddle.net/8p3ftmuh/3/