Javascript 如何仅在用户键入内容时验证注册

Javascript 如何仅在用户键入内容时验证注册,javascript,registration,Javascript,Registration,这就是我尝试使用atm的目的,但它不起作用,因为当用户不输入任何内容时,他会收到“您的电话号码包括10个号码”警报,尽管它应该直接进入“其他”并且不显示任何内容&让他通过。 这段代码的要点是仅当用户实际键入电话号码时才对其进行验证,这样我就不会在数据库中得到无意义的号码,但我也不会强迫用户键入他的号码。 不起作用的部分是if&else部分。里面的所有内容都是“如果”独立工作的,但我不想强迫用户键入他们的电话号码,所以我添加了这些“如果&其他” 功能检查电话(){ var x=document.

这就是我尝试使用atm的目的,但它不起作用,因为当用户不输入任何内容时,他会收到“您的电话号码包括10个号码”警报,尽管它应该直接进入“其他”并且不显示任何内容&让他通过。 这段代码的要点是仅当用户实际键入电话号码时才对其进行验证,这样我就不会在数据库中得到无意义的号码,但我也不会强迫用户键入他的号码。 不起作用的部分是if&else部分。里面的所有内容都是“如果”独立工作的,但我不想强迫用户键入他们的电话号码,所以我添加了这些“如果&其他”

功能检查电话(){
var x=document.getElementById(“电话”).value;
如果(x==“”| | x.length>0){
如果(x==“”| | x.length==10){
document.getElementById(“errorPhone”).innerHTML=“您的电话号码包括10个号码”
返回false;
}
对于(var s=0;s如果(!('0'进行一些重构,事情就会更清楚

函数设置错误(text=”“){
document.getElementById(“errorPhone”).innerHTML=text;
}
函数为数字(文本){
返回/^\d+$/.test(文本)
}
函数CheckPhone(){
var phone=document.getElementById(“phone”).value;
如果(!phone | |!phone.length){
返回false;
}
如果(phone.length==10){
SetError(“您的电话号码包括10个号码”);
返回错误
}
如果(!IsNumeric(电话)){
SetError(“您的电话号码只能包含数字”);
返回false;
}
返回true;
}
console.log(CheckPhone())
#错误电话{
颜色:红色;
}

  • 初始检查是否有值。如果没有,返回并停止进一步执行
  • 如果有值,则检查它是否为数字。如果不是,则返回false
  • 如果是数字,则检查是否有10位数字。如果没有,则返回false
功能检查电话(){
设x=document.getElementById(“电话”).value.trim();
document.getElementById(“errorPhone”).innerHTML=“”;
//当字段中没有输入值时
//如果字段中没有值,则返回true
如果(x==“”){
返回true;
}
//检查该值是否为数字
如果(!isNaN(parseInt(x))){
//当x是一个数字时
//检查号码是否有10位数字
如果(x.长度!=10){
//当x的位数不等于10时
document.getElementById(“errorPhone”).innerHTML=“您的电话号码包括10个号码”;
返回false;
}否则{
//当x的位数等于10时
返回true;
}
}否则{
//当x不是一个数字时
document.getElementById(“errorPhone”).innerHTML=“您的电话号码只能包含数字”;
返回false;
}
}

正如我在评论中所说,当涉及到国际号码和/或服务号码时,您解决此问题的方法将导致更多问题。更好的方法是使用正则表达式。请记住,尽管没有“完美”的方法解决此问题

下面的代码允许您定义最小和最大长度,如果您希望这样做,但这不是必需的(如果您想安全起见):

功能检查电话(str,最小值=1,最大值=100){
//如果没有提供电话号码,只需返回有效号码
如果(str.length<1){
返回“有效”;
}
//电话号码的合理安全正则表达式
var regex=new RegExp(/^(\(?\+?[0-9]*\)?)?[0-9\-\(\)]*$/,'g');
//检查预期长度
如果(str.lengthmax){
return“您的电话号码长度应介于“+min+”和“+max+”字符之间。”;
}
//检查有效的电话号码
if(正则表达式测试(str)){
返回“有效”;
}否则{
return“您的电话号码似乎无效”;
}
}
var result=CheckPhone(“+001234567890”,5,15);//最少5个,最多15个字符
var example=CheckPhone(“+001234567890”);//没有给出最小或最大长度
如果(结果!=“有效”){
document.getElementById(“errorPhone”).innerHTML=result;
}否则{
//给定的有效数字,请相应处理
}

国际号码怎么办?服务号码怎么办?我并不是不想告诉你如何解决这个问题,但你的整个方法本身就是错误的。你将遇到比这更多的问题。无论如何,给你的问题一个提示:你的第一个if语句总是返回true。if为空或length over zero=总是true.gotcha,将首先尝试此操作(并根据我的需要进行相应的编辑)@kfirezer我想知道,当你打算使用我的答案时,为什么你会接受另一个答案?除了投票/接受某人的答案是一种表达你对花在帮助你上的时间表示感谢的方式外,它还被列为未来有同样问题的访客的最佳解决方案。我不在乎代表,但我在乎t本网站仍然是需要帮助的人的可靠资源:)由于某种原因,这最终不起作用,但另一个起作用了,我将“V”做这件事的人job@kfirezer那很好。如果你有时间,请解释一下什么不起作用。如果我的代码有问题,我想为其他问题改进它。我正在处理一个端口问题atm,很快就会这样做。
function CheckPhone() {
    let x = document.getElementById("phone").value.trim();
    document.getElementById("errorPhone").innerHTML = "";

    // when there is no value entered in the field
    // return true if there is no value in the field
    if ( x == "" ) {
        return true;
    }

    // check if the value is a number
    if ( !isNaN(parseInt(x)) ) {

        // when x is a number
        // check if the number has got 10 digits
        if ( x.length != 10 ) {

            // when number of digits of x is not equal to 10
            document.getElementById("errorPhone").innerHTML = "your phone number includes 10 numbers";
            return false;
        } else {

            // when number of digits of x is equal to 10
            return true;
        }

    } else {

        // when x is not a number
        document.getElementById("errorPhone").innerHTML = "<span style='color:Red'>your phone number can only contain numbers</span>";
        return false;
    }
}
function CheckPhone(str, min = 1, max = 100) {
    // If no phone number given, just return valid
    if(str.length < 1){
        return "valid";
    }

    // Reasonably safe regular expression for phone numbers
    var regex = new RegExp(/^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/, 'g');

    // Check for expected length
    if(str.length < min || str.length > max) {
        return "Your phone number should be between "+min+" and "+max+" characters long.";
    }

    // Check for valid phone number
    if(regex.test(str)) {
        return "valid";
    } else {
        return "Your phone number does not appear to be valid";
    }
}

var result = CheckPhone("+001234567890", 5, 15); // Minimum 5, maximum 15 characters
var example = CheckPhone("+001234567890"); // No minimum or maximum length given

if(result != "valid"){
    document.getElementById("errorPhone").innerHTML = result;
} else {
    // valid number given, handle accordingly
}