jquery验证表单逻辑

时间:2013-04-17 22:53:33

标签: javascript jquery validation logic

我有另一个逻辑问题,我一直困扰着他。我需要这个表单只允许其中一个或另一个。文本输入或复选框,而不是两者!

}else if(question_pos==7){
        if(!($('#test_check').prop('checked')) && $("#test").val()!="0" &&  ($("#test").val() =="" || 
                !Number($("#test").val()) ||  Number($("#test").val())<0 || Number($("#test").val())>20 )){
          alert("placeholder?");
          return false;

输入:

    <table class="screening" width="100%" cellspacing="5px">
    <tr>
        <td width="8%" align="right"><input name="test" id="test" type="text" pattern="\d*" size="3" maxlength="2"  value="<%=session.getAttribute("test")==null?"":session.getAttribute("test")%>"/>
     </td>
     <td>day(s)</td>
</tr>
      <tr>
        <td width="8%" align="right" valign="top"><input name="test_check" id="test_check" type="checkbox" value="1" <%=(session.getAttribute("test_check")!=null && session.getAttribute("test_check").equals("1"))?"checked":""%>/></td>
        <td width="92%"><label for="test_check">My baby is still in the hospital</label></td>
    </tr>
    </table>

验证需要确保在选中复选框时没有文本输入。

2 个答案:

答案 0 :(得分:1)

基本上,您要检查checked属性是否为true以及该字段是否包含某些字符。如果两个条件都满足,则表示表单的状态无效。

以下是http://jsfiddle.net/g4q34/

的示例

您应该避免反复调用$("#test"),这会使代码的可读性降低,并且在性能方面效率非常低。将引用存储在变量中,然后重用该变量。

var checked = $('#test_check').prop('checked'),
    val = $("#test").val();

if (checked && val.length) {
    //invalid
} else {
    //the checkbox is checked OR the input contains text, but not BOTH
}

以下是您自己的代码示例:

} else if (question_pos==7) {
        if($('#test_check').prop('checked') && $("#test").val().length) {
            alert("placeholder?");
            return false;
        }

答案 1 :(得分:0)

这就是我最终需要它的工作方式。我只是喝了一些咖啡醒来!

}else if(question_pos==7){
    if(!$('#example_check').prop('checked') && $("#example").val()!="0" &&  ($("#example").val() =="" || !Number($("#example").val()) ||  Number($("#example").val())<0 || Number($("#example").val())>20 )){
    alert("How long did your baby stay in the hospital?");
    return false;
    }else if($('#example_check').prop('checked') && $("#example").val().length) {
    alert("Have you taken your baby home or is your baby still in the hospital?");
    return false;

我将“测试”改为“示例”