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;
    }
  });