我有另一个逻辑问题,我一直困扰着他。我需要这个表单只允许其中一个或另一个。文本输入或复选框,而不是两者!
}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>
验证需要确保在选中复选框时没有文本输入。
答案 0 :(得分:1)
基本上,您要检查checked
属性是否为true以及该字段是否包含某些字符。如果两个条件都满足,则表示表单的状态无效。
您应该避免反复调用$("#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;
我将“测试”改为“示例”