【发布时间】:2021-06-28 10:33:39
【问题描述】:
我有一个简短的 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;
}
});
【问题讨论】:
-
您应该使用 console.log 检查您的代码在哪里。我认为这是因为第一个条件(donationfrom)无效
-
尝试不使用
if ($("input[name='donationfrom'][value='no']").prop("checked")) {行 -
所以这两个字段只有在donationFrom/no被勾选时才需要。
-
下一步是添加一个minimal reproducible example 示例。编辑并单击
[<>]创建一个sn-p,包括所有相关的html(表单、复选框、2 个输入和一个按钮)。 -
仅在两个文本字段均已填写时才提交 - 应使用 AND - 是的,如果您要检查两个字段是否为 填充 - 但你不是。您正在检查它们是否为空-并且您不想要“两者”任何东西-(看起来)您想要一个填充一个不填充,所以使用
if (($("#paspatou").val().length === 0) === ($("#urno").val().length === 0))这样它们就不是空的/都带有价值。
标签: javascript jquery jquery-ui