簡體   English   中英

嚴格在Javascript xhtml 1.0中驗證表單數據,而不為此實例考慮服務器端腳本

[英]Validating form data in Javascript xhtml 1.0 strict, not considering server side scripts for this instance

關於使用javascript驗證電子郵件地址還有其他問題。 還有關於驗證表格的問題。 但是,我無法使我的代碼正常工作,也找不到適合該特定問題的問題。

編輯

我完全理解,在實時網站中,服務器端驗證至關重要。 我也了解發送電子郵件確認的價值。 (我實際上有一個具有所有這些功能的網站)。 我知道如何在php中編寫垃圾郵件檢查代碼。

在這種情況下,我被要求驗證電子郵件輸入字段。 我必須嚴格遵守xhtml 1.0,因此不能使用類型“ email”,並且不允許使用服務器端腳本進行此分配。 我無法組織電子郵件確認,必須通過javascript進行全面檢查。

我希望這可以澄清我的問題

我正在嘗試驗證兩種形式的表單。

檢查所有字段是否都有數據。 查看是否輸入了有效的電子郵件地址。

我能夠驗證數據的表單字段,但是嘗試合並電子郵件檢查對我來說很麻煩。

它曾經發出警報,但現在卻不正確,根本沒有被調用(或者至少這是它的行為方式)。

一旦開始工作,我便需要集中精力檢查電子郵件地址是否匹配。 但是,這是這個問題之外的問題。

我只專注於在javascript對此進行驗證。 我不關心這種特定情況下的服務器端(這個問題之外的另一個問題)。 謝謝。

function Validate()
        {
            var inputs = [document.getElementById('fname'),_
 document.getElementById('lname'), document.getElementById('email1'),_
 document.getElementById('email2')];

            for(var i = 0; i<inputs.length; i++)
            {
                if(inputs[i].value == '')
                {
                   alert('Please complete all required fields.');
                    return false;
                    }

                    else if ((id =='email1' || 'email2') &&_
(inputs[i].value!= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ )){
                        alert('Please enter a valid email address.');
                        return false;
                    }
            }
         }


<form onsubmit="return Validate()"  action="" method="post"  id="contactForm" >
 <input  type="text"  name="fname" id="fname"  />

 <input  type="text"  name="lname" id="lname" />

 <input   type="text"  name="email1"  id="email1" />

 <input   type="text"  name="email2"  id="email2"/>

 <input type="submit" value="submit" name="submit"  />
</form>

旁注-設置環繞文本的格式是否可以(出於發布問題的目的,添加並加下划線並創建新行以提高可讀性?在實際文本中我沒有此提示!請告知是否有一種更簡單的方法來格式化我的帖子代碼。再次感謝。

編輯2

當我注釋掉它時,它起作用:

/*else if ((id =='email1' || id=='email2') && (inputs[i].value!= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ )){
    alert('Please enter a valid email address.');
        return false;
}*/

因此,這有助於排除故障。

 var a=document.getElementById('fname');
 var b=document.getElementById('lname');
 var c=document.getElementById('email1');
 var d=document.getElementById('email12')

if(a==""||b==""||c==""||d=="")
 {
 alert('Please complete all required fields.');
 return false;
 }

我已經在這里看到語法錯誤:

else if ((id =='email1' || 'email2') 

應該

else if ((id =='email1' || id=='email2') 

從我看到的地方。

還要注意,在任何字段中輸入空格也將通過測試:在測試空值時,應修剪字段值。

最后,關於驗證電子郵件,這不是您使用正則表達式的方式。 請閱讀這篇文章 ,以獲取有關如何在javascript + regex中驗證電子郵件的演示。

驗證電子郵件地址最好的方法是將電子郵件發送到該地址。 正則表達式不適用於驗證電子郵件地址。 您也許可以驗證普通郵件,例如john.doe@email.com,但如果使用正則表達式,則會拒絕其他有效的電子郵件地址

很難檢查出Regexp對電子郵件地址的識別嗎? AND: 使用正則表達式驗證電子郵件地址

我按如下方法解決了我的問題。 我也在這里檢查郵件是否匹配。

// JavaScript Document
//contact form function

 function ValidateInputs(){
 /*check that fields have data*/

 // create array containing textbox elements
 var inputs = [document.getElementById("fname"),_
document.getElementById("lname"), document.getElementById("message"),_
document.getElementById("email1"), document.getElementById("email2")];

    for(var i = 0; i<inputs.length; i++){
 // loop through each element to see if value is empty
        if(inputs[i].value == ""){

            alert("Please complete all fields.");
            return false;
        }
        else if ((email1.value!="") && (ValidateEmail(email1)==false)){

            return false;
        }
        else if ((email2.value!="") && (EmailCheck(email2)==false)){

            return false;
        }
    }
}   


function ValidateEmail(email1){
/*check for valid email format*/
    var reg =/^.+@.+$/;

    if (reg.test(email1.value)==false){

        alert("Please enter a valid email address.");
        return false;

    }
}

function EmailCheck(email2){

    var email1 = document.getElementById("email1");
    var email2 = document.getElementById("email2");

    if ((email2.value)!=(email1.value)){

        alert("Emails addresses do not match.");
        return false;
    }
}

<form onsubmit="return ValidateInputs();" method="post"  id="contactForm">

    <input  type="text"  name="fname" id="fname"  />
    <input  type="text"  name="lname" id="lname" />
    <input   type="text" onblur="return ValidateEmail(this);"  name="email1"  id="email1" />
    <input   type="text" onblur="return EmailCheck(this);" name="email2"  id="email2"/>
    <input type="submit" value="submit" name="submit"  />
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM