IF 语句中的 jQuery OR 运算符检查任一文本字段是不是为空
Posted
技术标签:
【中文标题】IF 语句中的 jQuery OR 运算符检查任一文本字段是不是为空【英文标题】:jQuery OR operator in an IF statement checking if either text field is emptyIF 语句中的 jQuery OR 运算符检查任一文本字段是否为空 【发布时间】: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))
这样它们就不是空的/都带有价值。
【参考方案1】:
您应该更改内部 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;
);
【讨论】:
我更改了条件,因为我将 IF 中的逻辑切换为返回 true,如果不满足条件,您将转到带有警报的部分。 感谢它有效,为了弄清楚为什么在 OR 语句中返回了一个真值?以上是关于IF 语句中的 jQuery OR 运算符检查任一文本字段是不是为空的主要内容,如果未能解决你的问题,请参考以下文章
如何在 jquery 中的 if 和 else 中进行数学运算?
Python中的if语句——参考Python编程从入门到实践