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 示例。编辑并单击[&lt;&gt;] 创建一个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 语句中的三元运算符

如何在 jquery 中的 if 和 else 中进行数学运算?

if判断语句

Python中的if语句——参考Python编程从入门到实践

Java 运算符检查任一条件是不是为假,但不能同时为假或都不为假

if语句