我试图使一个函数,验证用户输入和返回true,如果没有错误或false(并显示消息),如果有问题。
如果发现错误,无需检查其他输入,只需跳到函数末尾设置和格式化错误
。
let ValidateInput = function() {
let errorMessage = "";
if (input1 == "") {
errorMessage = "Something";
continue exithere;
}
if (input2 == "") {
errorMessage = "Something else";
continue exithere;
}
exithere:
if (errorMessage != "") {
//Display error
//Change error <p>'s format by adding classlist
}
}
使用continue
或break
显示错误"跳转目标不能跨越函数边界。ts(1107)&",但我的标签(exithere:)在函数内部…
我知道我可以使用&;return false;&;在每个if语句的末尾,但是我更喜欢在函数中只有一个出口点,在那里我可以只显示和格式化一次消息,而不是在每个if语句的末尾。
使用break结束同样的错误。
您可以将整个代码块包装在只执行一次的do...while
中,并使用break
进行结束。但这比直接返回无效输入要难读得多。
let errorMessage = "";
do {
if (input1 == "") {
errorMessage = "Something";
break;
}
if (input2 == "") {
errorMessage = "Something else";
break;
}
} while (0);
// break goes to here
另一个选项是在for循环中遍历每个输入并检查值是否为空。并向每个输入字段添加一个data-error属性。如果值是空的,就抓住这个错误并终止for循环。这将允许您拥有动态数量的字段,而不必在javascript中添加越来越多的字段。
let validateInput = function() {
let validate = document.querySelectorAll(".validate");
let err = "";
for(let z = 0;z<=validate.length-1;z++){
let fld = validate[z];
if(fld.value == ""){
err = fld.dataset.error;
break;
}
}
if (err != "") {
err = "Fancy Error: " + err;
}
return err;
}
document.querySelector("button").addEventListener("click",(e) => {
console.log(validateInput());
});
<input type="text" class="validate" data-error="Please enter in your name">
<input type="text" class="validate" data-error="Please enter in your Phone">
<input type="text" class="validate" data-error="Please enter in your Address">
<hr>
<button>VALIDATE</button>