使用JavaScript验证文本字段和复选框

时间:2014-09-18 20:53:49

标签: javascript jquery html validation checkbox

我想要一个完整的"验证表格"功能。我只缺少两件事:

  1. 将“名称”字段限制为仅字母字符和空格
  2. 验证是否至少选中了一个复选框,并且最多允许7个复选框
  3. 这是我到目前为止所得到的...复选框验证似乎被绕过了,我不确定它是否因为我没有调用&中的函数#34;的onSubmit" ....这就是为什么我想拥有一个"一个"完整代码,

    至于名称验证,我不确定如何将此代码放在validateform3函数中 或至少将其与表格相关联,同样适用于复选框验证。

    NAME VALIDATION JS

    function englishonly(inputtxt)
    {   
        var letters = /^[A-Za-z]+$/;  
        if(inputtxt.value.match(letters))  
        {    
            return true;  
        }
        else  
        {  
            alert('Please type your name in english');  
            return false;  
        }  
    } 
    

    JAVASCRIPT

    <script type="text/javascript">
        function validateForm3() {                      
            if (studentid.value == "")
            {
                studentid.style.borderColor = '#ff0000';
                alert("Please enter your Student ID");
                studentid.focus();
                return false;
            }
    
            var x=document.forms["form3"]["studentid"].value;
            if (! /^[0-9]{11}$/.test(x)) {
                studentid.style.borderColor = '#ff0000';
                studentid.style.backgroundColor = "#fdf0af";
                alert("The Student ID you entered is incorrect.");
                return false;
            }
    
            if (Email.value == "")
            {
                Email.style.borderColor = '#ff0000';
                alert("Please enter your e-mail");
                Email.focus();
                return false;
            }
            var x=document.forms["form3"]["Email"].value;
            if (x.indexOf("@")=== -1)
            {
                Email.style.borderColor = '#ff0000';
                Email.style.backgroundColor = "#fdf0af";
                alert("Please enter a valid email");
                return false;
            }
    
            if (Name.value == "")
            {
                Name.style.borderColor = '#ff0000';
                alert("Please enter your Name in English");
                Name.focus();
                return false;
            }                                       
        }
    </script>
    
    <script type="text/javascript">
        $(document).ready(function () {    
            $("#Regestir").click(function () {
                var numberOfChecked = $('input:checkbox:checked').length;
                // $.isNumeric( $("#studentid").val() )
                if( $("#studentid").val()!="" && $("#studentid").val()!="" && $("#Email").val()!="" &&  $("#Name").val()!="")
                {                                       
                    if (numberOfChecked == 0 || numberOfChecked>7)
                    {
                        alert("Only 7 courses are allowed.");
                        $("form").submit(function(e){
                            e.preventDefault();
                        });
                    }
                    else
                        $("form").unbind('submit').submit();
                        //$("#form3").submit();                
                }
                else 
                {
                    alert ("You should enter all form values");
                    $("form").submit(function(e){
                        e.preventDefault();
                    });
                }
            });
        });
    </script>
    

    HTML

    <form action="connect.php" method="get" id="form3" 
          name="form3" onsubmit="return validateForm3()">
    

2 个答案:

答案 0 :(得分:0)

要获取已选中复选框的总数,请替换

var numberOfChecked = $('input:checkbox:checked').length;

var numberOfChecked = $('input:checkbox[name=type]:checked').length;

关于您的姓名验证englishonly功能的问题,您可以直接在validateform3功能中调用它。如果该函数的代码来自不同的文件,则必须包含该js文件。然后你的代码看起来像这样:

function validateform3(){
    // ....
    var valid_english_name = englishonly($('#name')); // or whatever your 'name' input ID is
}

作为旁注,如果由于某些验证错误而要取消表单提交,则可以仅使用e.preventDefault();return false;而不重新绑定submit事件处理程序。

此外,studentid.valueEmail.value等代码可能无效。由于您使用的是jquery,因此可以使用jquery selectors替换它们。

希望这有帮助。

答案 1 :(得分:0)

这是一个FIDDLE供您考虑。

JS

var inputname, length1, length2, checkboxcount = 0;
$('.clickme').on('click', function () {
    inputname = $('.myname').val();
    length1 = inputname.length;
    length2 = inputname.replace(/[^a-zA-Z\s]/gi, '').length;
    if (length1 != length2)
       {
        $('#errorspan').append('Only letters are allowed in a name');
        validname = 0;
        }
    else
      {
       validname = 1;
       }
    $('.checkme').each(function(){
        if( $(this).is(':checked') )
        {
         checkboxcount = checkboxcount + 1;
        }
    });
    if(checkboxcount < 1)
    {
             $('#errorspan').append('At least one checkbox must be checked');
             validbox = 0;
    }
    else if(checkboxcount > 6)
    {
             $('#errorspan').append('No more than 6 checkboxes can be checked');
             validbox = 0;
    }
    else{
         validbox = 1;
    }

  if (validname === 1 && validbox == 1)
     {
      alert("Everything Valid");
      }
  else
    {
     alert("Not Valid! You have work to do!");
     }
});