1

我的输入文本字段应该只允许数值0-9,并且应该正好是八位数字。这应该由onChange事件控制。一旦用户完成输入验证,应该触发。如果值正确,Ajax 请求将到达服务器,如果不是,用户应该会像 HTML 5 验证中的其他消息一样看到该消息。这是我的代码示例:

$('#userid').on('change', checkUser);

function checkUser(e) {
  var fldObj = $(this);

  if (!e.target.checkValidity()) {
    fldObj[0].setCustomValidity('Invalid User ID.');
    console.log(fldObj.val());
  } else {
    //send ajax request
    console.log('User ID is valid!');
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<input type="text" name="userid" id="userid" value="" pattern="[0-9]{8}" placeholder="Enter User ID">

我的代码工作不正确。如果我输入无效值,我看不到该消息。如果有人知道消息未显示的原因,请告诉我。

4

1 回答 1

1

仅当输入是表单的一部分时才报告有效性。尝试输入一个无效值并在下面的代码段中提交表单。

$('#userid').on('change', checkUser);

function checkUser(e) {
  var fldObj = $(this);

  if (!e.target.checkValidity()) {
    fldObj[0].setCustomValidity('Invalid User ID.');
    fldObj[0].parentElement.reportValidity();
    console.log(fldObj.val());
  } else {
    //send ajax request
    console.log('User ID is valid!');
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form>
    <input type="text" name="userid" id="userid" value="" pattern="[0-9]{8}" placeholder="Enter User ID">
    <button type="submit">Submit</button>
</form>

如果您不想等待提交按钮被点击,请查看HTMLFormElement.reportValidity().

于 2019-07-18T21:00:39.257 回答