javascript - 如果输入字段为空并且用户使用空白输入按回车键,我只想打印一次消息。我哪里出错了

标签 javascript if-statement

form.addEventListener('submit', (e) => { //create new invitee name
let text = input.value; //collect text value from input field
let counter = 0;
if (text != "") {
    createLI(text); //executes function to add new invitee. 
} else {. /*if text field is blank error message to be printed only once regardless on multiple entries with blank input*/

    const errorText = document.getElementById('enterName');
    const label = document.createElement('label');
    label.textContent = "please enter your full name";
    label.setAttribute("style", "color: red");
    if (counter == 0) {
        errorText.appendChild(label);
        counter += 1;
    }
}
});

最佳答案

您需要在函数外部声明计数器,否则每次用户提交表单时都会重置它。

let counter = 0;
form.addEventListener('submit', (e) => { /* Your awesome eventhandler */ });

发生这种情况是因为 JavaScript 会在函数结束后删除您的变量,并在事件再次触发时重新声明它。所以它实际上重新初始化计数器

PROTIP:使用 bool 而不是 int,这样您就可以

if (messageShowed) { /* Insert some code */ }

关于javascript - 如果输入字段为空并且用户使用空白输入按回车键,我只想打印一次消息。我哪里出错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50100456/

相关文章:

javascript - 如何检查javascript数字范围?

javascript - 有没有办法在 ThreeJs 中使用 dat.gui.js 构建范围 slider ?

javascript - 创建一个具有自动扩展宽度的文本框?

javascript - 选择文件时的操作

Python函数多个IF语句?

excel - ……:mm:ss format causing IF statement to return False

javascript - 从 typescript 中的通用类扩展的类扩展

javascript - 将 JavaScript 变量传递给 ruby​​-on-rails Controller

java - 如何使用户能够连续输入,但可以通过使用符号来停止输入?

java - 如果某事为真则跳过几行