使用document.getElementById()后未显示警报

时间:2018-10-09 14:45:44

标签: javascript jquery validation alert

在前端方面,我不是很熟练,所以也许我在这里忽略了一些显而易见的事情。 我有一个输入表单,单击提交时,下面的代码将数据发送到试图保存该数据的java后端。如果成功,则响应为200,如果数据有问题,则响应为400。我尝试添加警报,以告知用户是否成功。这些工作有效,除非我尝试在发送之前验证输入:

function saveEntry() {

  var form = document.getElementById("catalogEntry");  // apparently this line breaks all alerts within the ajax call
  if (form.checkValidity() === false) {
      form.classList.add("was-validated");
      return;
  }

  var formData = new FormData();
  // *Appending form data*

  $.ajax({
      type: "POST",
      url: "/addCatalogEntry/",
      data: formData,
      processData: false,
      contentType: false,
      cache: false,
      timeout: 600000,
      statusCode: {
          200: function (response) {
              alert("Entry saved");
          },
          400: function (response) {
              alert("Could not save entry");
          }
    }
  });

}

如果我删除了该功能的前5行,则会显示警报,但没有输入验证。一旦我添加了用于初始化表单变量的行,警报就会停止显示。我设法通过在ajax调用之后添加另一个毫无意义的警报来再次启动它们。我真的很困惑为什么会这样...

如果重要,我的表单基本上是这样的:

<form id="catalogEntry">

  <div class="input-group mb-2">
    <span class="input-group-addon col-sm-2">catalogId</span>
    <input id="catalogId" type="text" class="form-control" required>
  </div>

  <div class="input-group mb-2">
    <span class="input-group-addon col-sm-2">blockType</span>
    <select id="blockType" class="form-control">
      <option>1</option>
      <option>2</option>
      <option>3</option>
    </select>
  </div>

  <button type="submit" class="btn btn-default" onclick="saveEntry()">Save</button>

</form>

2 个答案:

答案 0 :(得分:1)

因为你在做

return; // returns "undefined"

在表单检查中,其余代码未执行。

答案 1 :(得分:-1)

在函数内,如果要继续执行脚本,则不能使用function assignEditUrls() { var form = FormApp.openById('some id'); var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1'); var data = sheet.getDataRange().getValues(); var urlCol = 6; var responses = form.getResponses(); var timestamps = [], urls = [], resultUrls = []; for (var i = 0; i < responses.length; i++) { timestamps.push(responses[i].getTimestamp().setMilliseconds(0)); urls.push(responses[i].getEditResponseUrl()); } for (var j = 1; j < data.length; j++) { resultUrls.push([data[j][0] ? urls[timestamps.indexOf(data[j][0].setMilliseconds(0))] : '' ]); } sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls); } 键;在这种情况下,当代码被读取且return句子为if({ {1}}),您用true

破坏了代码