jQuery IF 语句中的 OR 运算符检查任一文本字段是否为空
jQuery OR operator in an IF statement checking if either text field is empty
我有简短的 jQuery 代码试图检查任一文本字段是否为空。如果 either 为空,则不会提交表单。不幸的是,它仅在两个文本字段都已填写时才提交。如果我使用 AND 运算符应该会发生这种情况,但我使用的是 OR 运算符。怎么解释?
表单字段
<form method="post"
name="customerData"
action="ccavRequestHandler.php"
id="merchantFORM"
role="form">
<!-- New item -->
<div class="col-sm-6">
<div class="form-group mb-4">
<h6>Passport</h6>
<input class="form-control" id="paspatou" type="text" name="merchant_param4" />
</div>
</div>
<!-- New item -->
<div class="col-sm-6">
<div class="form-group mb-4">
<h6>Unique ID Number</h6>
<input class="form-control" id="urno" type="text" name="merchant_param3" />
</div>
</div>
文本字段 ID 名称是“paspatou”和“urno”。
我也在检查是否选中了其中一个单选按钮,这也能正常工作,因为我必须检测捐赠者是本地人还是外地人。唯一的问题是检测到只有一个字段必须填写,而不是两个。
if ($("input[name='donationfrom'][value='no']").prop("checked")) {
$("#merchantFORM").on('submit', function (e) {
if ($("input[name='donationfrom'][value='no']").prop("checked")) {
if (($("#paspatou").val().length <= 0) || ($("#urno").val().length <= 0)) {
alert("Please fill either Passport or Unique ID Number");
return false;
}
} else {
return true;
}
});
您应该更改内部 if 语句中的代码。你实际上需要 && ,因为你想在两个字段都为空时显示警报。
if (($("#paspatou").val().length <= 0) && ($("#urno").val().length <= 0)) {
alert("Please fill either Passport or Unique ID Number");
return false;
}
其他解决方案,如果您想保留 OR 逻辑,请像这样更改您的代码:
$("#merchantFORM").on('submit', function (e) {
if ($("input[name='donationfrom'][value='no']").prop("checked")) {
if (($("#paspatou").val().length > 0) || ($("#urno").val().length > 0)) {
return true;
}
alert("Please fill either Passport or Unique ID Number");
return false;
} else {
return true;
}
});
我有简短的 jQuery 代码试图检查任一文本字段是否为空。如果 either 为空,则不会提交表单。不幸的是,它仅在两个文本字段都已填写时才提交。如果我使用 AND 运算符应该会发生这种情况,但我使用的是 OR 运算符。怎么解释?
表单字段
<form method="post"
name="customerData"
action="ccavRequestHandler.php"
id="merchantFORM"
role="form">
<!-- New item -->
<div class="col-sm-6">
<div class="form-group mb-4">
<h6>Passport</h6>
<input class="form-control" id="paspatou" type="text" name="merchant_param4" />
</div>
</div>
<!-- New item -->
<div class="col-sm-6">
<div class="form-group mb-4">
<h6>Unique ID Number</h6>
<input class="form-control" id="urno" type="text" name="merchant_param3" />
</div>
</div>
文本字段 ID 名称是“paspatou”和“urno”。
我也在检查是否选中了其中一个单选按钮,这也能正常工作,因为我必须检测捐赠者是本地人还是外地人。唯一的问题是检测到只有一个字段必须填写,而不是两个。
if ($("input[name='donationfrom'][value='no']").prop("checked")) {
$("#merchantFORM").on('submit', function (e) {
if ($("input[name='donationfrom'][value='no']").prop("checked")) {
if (($("#paspatou").val().length <= 0) || ($("#urno").val().length <= 0)) {
alert("Please fill either Passport or Unique ID Number");
return false;
}
} else {
return true;
}
});
您应该更改内部 if 语句中的代码。你实际上需要 && ,因为你想在两个字段都为空时显示警报。
if (($("#paspatou").val().length <= 0) && ($("#urno").val().length <= 0)) {
alert("Please fill either Passport or Unique ID Number");
return false;
}
其他解决方案,如果您想保留 OR 逻辑,请像这样更改您的代码:
$("#merchantFORM").on('submit', function (e) {
if ($("input[name='donationfrom'][value='no']").prop("checked")) {
if (($("#paspatou").val().length > 0) || ($("#urno").val().length > 0)) {
return true;
}
alert("Please fill either Passport or Unique ID Number");
return false;
} else {
return true;
}
});