在Javascript中提醒一次

alert once in Javascript

本文关键字:一次 Javascript      更新时间:2024-07-05

我在HTML表单中有两个文本输入字段,我想使用JavaScript进行所需的验证。如果在第二个文本字段中有输入,而第一个文本输入字段为空或留空,我的JavaScript应该提醒"请先输入text1。"

然而,提醒框总是弹出不止一次,用户可能会觉得很烦人。首先,当我在text2中键入内容时。第二,当我点击text1输入内容时。有没有办法让警报框只显示一次,可能只在第一种情况下显示?

<script>
$("#text2").on("change",function(){ 
var t1 = document.getElementById("text1").value;
if (t1 == "")
alert("Please enter text1 first.");
});
</script>

使用jQuery的.one()函数,而不是.on()

<script>
    $("#text2").one("change", function (event) { 
        var t1 = document.getElementById("text1").value;
        if (t1 === "") {
            alert("Please enter text1 first.");
        }
    }
</script>

这里有点用户体验的答案,但是。。。

用户会发现任何数量的警报都很烦人(零除外)。

当呈现多个输入时,假设它们可以按任何顺序填写。大多数人会从第一名到最后一名,但有时填写更多的自由式可能更方便。

如果您不想允许用户在完成第一个之前在第二个中键入任何内容,则暂时不显示。只显示第一个输入,获取用户的输入,然后显示第二个输入。

最后,在适用的情况下,充分利用<input ... required />

首先,这是非常糟糕的用户体验™.你不应该这么做有几个原因:

  1. 显示界面常见误用的警报很烦人
  2. 这并不妨碍用户填写输入
  3. 您的解决方案无法引导用户正确(预期)使用您的界面

让我提出一个稍微好一点的建议:

根据另一个输入的空性禁用和启用一个输入

<script>
$('input#text1').change(function() {
  var $i2 = $('input#text2');
  if($(this).val().length() == 0) {
    $i2.attr('disabled','disabled');
    $i2.val('');
  } else {
    $i2.removeAttr('disable');
  }
});
</script>
$("#text2").change(function() {
if ($("#text1").val() === ""){
  alert("Please enter text1 first.");
}  });