javascript中的验证在多个if else语句中不起作用

validation in javascript not working in multiple if else statement?

本文关键字:if else 不起作用 语句 验证 javascript      更新时间:2023-09-26

下面是我的javascript代码-每当单击代理单选按钮时,它会进入第一个验证部分,而不检查其他部分:

function validate(form1) 
    {
        var agent1=document.getElementById('agent');
        var confirm=document.getElementById('confirm');
        var holding=document.getElementById('holding');
        var confirm=form1.confirm.value;
        var book_by=form1.bookby.value;
        var bkother=form1.bookbyother.value;
        var agntphn=form1.phone1.value;
        var gstnam=form1.guest_name.value;
        var gstphn=form1.guest_no.value;
        var adlts=form1.no_adults.value;
        var children=form1.no_child.value;
        var infants=form1.no_infants.value;
        var check_in=form1.checkin.value;
        var check_out=form1.checkout.value;
        var nfd1=form1.no_of_days.value;
        var rc=form1.roomtype.value;
        var rpd=form1.rp_day.value;
        var rpb=form1.extrarate.value;
        var tamt=form1.totalamount.value;
        var advamt=form1.advance_amount.value;
        if ((agent1.checked == true))
        {
            if(!(book_by || bkother))
            {
                alert('Choose the valid agent')
            }
            else if(agntphn =="")
            {
                alert('Enter the agent phone number')
            }
        }
        else if (gstnam=="") {
            alert("Enter a valid Name ");
            document.getElementById('guest_name').focus();
            return false;
            //errors[errors.length] = "Enter valid Name ";
        }
        else if (!ck_Mobileno.test(gstphn)) {
            alert("Enter a valid Mobile Number with 10 digits");
            document.getElementById('guest_no').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if ((adlts=="") &&( children=="" )&&( infants=="")) {
            alert("Enter a valid No of persons");
            document.getElementById('no_adults').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(check_in)) {
            alert("Enter a valid Checkin Date");
            document.getElementById('checkin').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(check_out)) {
            alert("Enter a valid  check_out date");
            document.getElementById('checkout').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(nfd1)) {
            alert("Click to the box to get the no of days");
            document.getElementById('no_of_days').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(rc)) {
            alert("Select the room type");
            document.getElementById('roomtype').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(rpd)) {
            alert("Enter the Rate Per Day");
            document.getElementById('rp_day').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(rpb)) {
            alert("Enter the Rate Per Bed");
            document.getElementById('extrarate').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(tamt)) {
            alert("Click on the box to get the total amount");
            document.getElementById('totalamount').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
        else if (!(advamt)) {
            alert("Enter the advance amount");
            document.getElementById('advance_amount').focus();
            return false;
            //errors[errors.length] = "Enter valid mobileno ";
        }
    }
</script>

检查jfiddle

一旦确认单选按钮被点击,所有禁用元素显示…

假设您的表单正在运行

<form onsubmit="return validate(this)"
  1. 修复其他问题。大多数其他的都不需要,特别是代码中的第一个,如果检查代理,将停止其余的验证。我已经添加了一些代码来处理所选代理或键入代理的验证—当它变得那么大时,一个单独的函数会更好
  2. 将||改为&&if(!(book_by && bkother)) {
  3. 重命名并更改表单
  4. 末尾的第二个bookby字段的ID
  5. 删除phone1中的空格或在测试
  6. 之前使用trim来删除空格

function validate(form1) {
  var....
  var....
  var....
  if(agent1.checked) {
    if (book_by == "") {
      alert('Choose a valid agent');
      document.getElementById('bookby').focus();
      return false;
    } else {
      if (bkother == "") {
        alert('Type an agent name');
        document.getElementById('bookbyother').focus();
        return false;
      }
      if (agntphn == "") {
        alert('Enter the agent phone number');
        document.getElementById('phone1').focus();
        return false;
      }
    }
  }
  if (gstnam == "") {
    alert("Enter a valid Name ");
    document.getElementById('guest_name').focus();
    return false;
    //errors[errors.length] = "Enter valid Name ";
  }
  if (!ck_Mobileno.test(gstphn)) {
    alert("Enter a valid Mobile Number with 10 digits");
    document.getElementById('guest_no').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if ((adlts == "") && (children == "") && (infants == "")) {
    alert("Enter a valid No of persons");
    document.getElementById('no_adults').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(check_in)) {
    alert("Enter a valid Checkin Date");
    document.getElementById('checkin').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(check_out)) {
    alert("Enter a valid  check_out date");
    document.getElementById('checkout').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(nfd1)) {
    alert("Click to the box to get the no of days");
    document.getElementById('no_of_days').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(rc)) {
    alert("Select the room type");
    document.getElementById('roomtype').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(rpd)) {
    alert("Enter the Rate Per Day");
    document.getElementById('rp_day').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(rpb)) {
    alert("Enter the Rate Per Bed");
    document.getElementById('extrarate').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(tamt)) {
    alert("Click on the box to get the total amount");
    document.getElementById('totalamount').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  if (!(advamt)) {
    alert("Enter the advance amount");
    document.getElementById('advance_amount').focus();
    return false;
    //errors[errors.length] = "Enter valid mobileno ";
  }
  return true; // allow submission
}

您正在使用if (condition) {} else if (condition) {}。第一个匹配的条件将被执行。

如果要执行所有测试,则移除else

    if ((agent1.checked == true))
    {
        if(!(book_by || bkother))
        {
            alert('Choose the valid agent');
            return false;
        }
        else if(agntphn =="")
        {
            alert('Enter the agent phone number')
            return false;
        }
    }
    // == > don't use else if here, just a plain if
    if (gstnam=="") {
        alert("Enter a valid Name ");
        document.getElementById('guest_name').focus();
        return false;
    }
    // ... continuing on for the rest of your if statements

如果根据数据,您只希望执行一些测试,那么您必须将代码分解成块,并使用正确的if测试来确定哪些代码在哪些条件下执行。但是,您所使用的方法将只执行第一个条件与匹配,而不执行其他条件