【问题标题】:Javascript / jQuery form validationJavascript / jQuery 表单验证
【发布时间】:2011-04-19 09:04:59
【问题描述】:

大家好。我目前正在使用效率非常低的脚本来验证我的表单。代码量很大。

这样做的想法是,如果输入框为空白,则输入标签会以红色突出显示,并且表单顶部的 div 会显示有关错误的信息。

function new_receiver(){


if (document.getElementById("RecieversName").value ==""){ //First Name

        var txt=document.getElementById("error_receiver");
        txt.innerHTML="<p><font color=\"#FF0000\">You need to enter a Name!</font></p>";    
        window.document.getElementById("RecieversName_label").style.color = '#FF0000';

        //Reset
        window.document.getElementById("receiver_check_label").style.color = '#000000';
        window.document.getElementById("RecieversNumber_label").style.color = '#000000';
        window.document.getElementById("RecieversEmail_label").style.color = '#000000';

}else if (document.getElementById("RecieversNumber").value ==""){ //First Name

        var txt=document.getElementById("error_receiver");
        txt.innerHTML="<p><font color=\"#FF0000\">You need to enter a Phone Number!</font></p>";    
        window.document.getElementById("RecieversNumber_label").style.color = '#FF0000';

        //Reset
        window.document.getElementById("receiver_check_label").style.color = '#000000';
        window.document.getElementById("RecieversName_label").style.color = '#000000';
        window.document.getElementById("RecieversEmail_label").style.color = '#000000'

}else if (document.getElementById("RecieversNumber").value ==""){ //First Name

        var txt=document.getElementById("error_receiver");
        txt.innerHTML="<p><font color=\"#FF0000\">You need to enter an Email!</font></p>";  
        window.document.getElementById("RecieversEmail_label").style.color = '#FF0000';

        //Reset
        window.document.getElementById("receiver_check_label").style.color = '#000000';
        window.document.getElementById("RecieversName_label").style.color = '#000000';
        window.document.getElementById("RecieversNumber_label").style.color = '#000000';


}else{
from.receiver.submit();

}'

任何使这个过程变得简单的想法或方法,因为我的一些表单有多达 9 个输入框,而且这种验证方法非常庞大!

大家好!!!

塞缪尔。

【问题讨论】:

    标签: javascript validation


    【解决方案1】:

    我建议是这样的:

    function new_receiver() {
        var inputs = [
            {
                id: "RecieversName",
                name: "a Name"
            },
            {
                id: "RecieversNumber",
                name: "a Phone Number"
            }
            // add more here
        ],
        length = inputs.length,
        error = document.getElementById("error_receiver"),
        hasError = false,
        i;
    
        // reset
        for (i = 0; i < length; i++) {
            document.getElementById(inputs[i].id + "_label").style.color = "#000000";
        }
        error.innerHTML = "";
    
        for (i = 0; i < length; i++) {
            if (document.getElementById(inputs[i].id).value == "") {
                error.innerHTML = "<p><font color=\"#FF0000\">You need to enter " + inputs[i].name + "!</font></p>";    
                document.getElementById(inputs[i].id + "_label").style.color = "#FF0000";
                hasError = true;
                break;
            }
        }
    
        if (!hasError) {
            from.receiver.submit();
        }
    }
    

    【讨论】:

      【解决方案2】:

      你可以先尝试这样的事情

       $('input').blur(function() {
           if($(this).val()==""){
                  $("#error_receiver").html("<p><font color=\"#FF0000\">This field is required!");
                  $("label[for=' + this.attr("id") + ']").css('color', '#FF0000');
               }
        });
      

      【讨论】:

        【解决方案3】:

        这是一个没有 jQuery 的建议

        <form onsubmit="return new_receiver()">
        .
        .
        
        var formFields = {
          "RecieversName": "You need to enter a Name!",
          "RecieversNumber":"You need to enter a Number!",
          "RecieversEmail":"You need to enter an Email!"   
        }
        function new_receiver(){
          var txt=document.getElementById("error_receiver");
          //Reset
          txt.innerHTML="";
          for (var o in formFields) document.getElementById(o+"_label").style.color = '#000000';
        
          for (var o in formFields) {
            if (document.getElementById(o).value ==""){ 
              txt.innerHTML="<p><font color=\"#FF0000\">"+formFields[o]+"</font></p>";    
              window.document.getElementById(o+"_label").style.color = '#FF0000';
              return false;
            }
          }
          return true
        }  
        

        【讨论】:

          【解决方案4】:

          【讨论】:

          • 这将要求他也使用 jQuery,看起来他不是。
          • @alex 他在标题中提到了 jQuery
          • 干杯马赫什。我正在努力避免使用更多插件,因为我已经有了头脑,但这仍然是未来的绝佳选择!
          猜你喜欢
          • 2023-04-09
          • 2015-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-12
          • 2013-10-07
          相关资源
          最近更新 更多