【问题标题】:jquery validation form logicjquery验证表单逻辑
【发布时间】:2013-04-17 22:53:33
【问题描述】:

我还有另一个逻辑问题,我被困住了。我需要这个表格来只允许一个或另一个。文本输入或复选框,而不是两者!

}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>

如果勾选了复选框,验证需要确保没有文本输入。

【问题讨论】:

  • 请发布整个问题。

标签: javascript jquery validation logic


【解决方案1】:

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

这是一个例子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;
        }

【讨论】:

  • @user2089255,“文本输入或复选框”,这正是以下代码显示的内容。只有当输入包含文本并且复选框被选中时,它才会输入if 语句。还有什么我不明白的吗?
  • 我认为我的验证没问题,但似乎某处存在逻辑错误或括号放错位置或错误(非)逗号。
  • @user2089255,以下答案就是您的问题。如果这不是您想要的,请更新您的问题。
  • 如果勾选了复选框,验证需要确保没有文本输入。
  • 不抱歉,我的意思是如果文本输入框中有任何文本并且复选框被选中,我需要一条错误消息。
【解决方案2】:

这正是我所需要的。我只需要喝点咖啡就醒了!

}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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    相关资源
    最近更新 更多