2017-05-17 35 views
0

下面的代碼:爲什麼JavaScript「req」驗證程序無法正常工作?

<script language="JavaScript"> 
 
    var frmvalidator = new Validator("contactform"); 
 
    frmvalidator.addValidation("name","required","Please provide your name"); 
 
    frmvalidator.addValidation("email","required","Please provide your email"); 
 
    frmvalidator.addValidation("email","email", 
 
    "Please enter a valid email address"); 
 
</script> 
 

 
<form method="post" name="contactform" action="contact-form-handler.php"> 
 
\t <div class="row uniform 50%"> 
 
\t \t <div class="6u 12u(mobilep)"> 
 
\t \t <input type="text" name="name" id="name" placeholder="Name" /> 
 
\t \t </div> 
 
\t \t <div class="6u 12u(mobilep)"> 
 
\t \t \t <input type="email" name="email" id="Wemail" placeholder="Email" /> 
 
\t </div> 
 
\t </div> 
 
    <div class="row uniform 50%"> 
 
\t \t <div class="12u"> 
 
\t \t <input type="text" name="subject" id="subject" placeholder="Subject" /> 
 
\t </div> 
 
\t </div> 
 
\t <div class="row uniform 50%"> 
 
\t \t <div class="12u"> 
 
\t \t \t <textarea name="message" id="message" placeholder="Enter your message" rows="6"> 
 
     </textarea> 
 
\t </div> 
 
\t </div> 
 
\t <div class="row uniform"> 
 
\t \t <div class="12u"> 
 
\t \t \t <ul class="actions align-center"> 
 
\t \t \t <li><input type="submit" value="Send Message" /></li> 
 
\t \t </ul> 
 
\t </div> 
 
    </div> 
 
</form>

這裏的控制檯錯誤:

{ 
    "message": "Uncaught ReferenceError: Validator is not defined", 
    "filename": "https://stacksnippets.net/js", 
    "lineno": 12, 
    "colno": 27 
} 

「電子郵件」 驗證功能在這裏看到:
Screenshot of JS validation

但是, 「必需」有效主持人不工作。我最初嘗試了「req」,但那也沒用。我認爲重複的ID和名稱值可能是錯誤的,但我改變了他們無濟於事。我很困惑,爲什麼JS不會應用所需的驗證器。我應該改變什麼才能使此驗證工作?

編輯:我使用this教程作爲指導。 Validator對象位於可下載的.js文件中。
幸運的是,評論和以前的答案讓我朝着正確的方向前進。請參閱下面的確切答案。

+0

請告訴我們您正在使用哪個庫進行驗證。沒有內置的JavaScript對象'Validator'。 –

+0

我並不擔心圖書館(我應該是)因爲我正在學習一個教程。感謝讓我更加關注它! – PujitM

回答

0

所以我犯的錯誤很簡單。
不是將gen_validatorv4.js腳本的HTML文件的標題相反,我把它放在了<body>元素的底部,</body>之前。

出於某種原因(我不明白爲什麼 - 註釋說明這將是真棒),放置腳本固定錯誤的標題。

解決方案:將驗證器腳本放在HTML的標題中,而不是放在主體的末尾。

謝謝,所以!

+0

這是因爲在標題中的所有內容都編譯和執行DOMReady事件之前,在它的編譯後腳本 它是也是一個很好的做法,可以將大部分的javascript(所有不重要的東西)放到文檔的末尾,這樣用戶就可以更快地獲得內容(無需在呈現內容之前下載所有的js)。 – sznowicki

0

我不知道你想做什麼,但Validor並不似乎是一個vanilla.js對象。

如果您嘗試使用原生html5表單驗證,您只需將正確的屬性添加到表單元素。

對於電子郵件的輸入將是: <input type="email" required="required" .../>

這將告訴瀏覽器來驗證此域作爲一個電子郵件,該區域是強制性的。

並非所有的瀏覽器都支持這個(主要是一些很舊的),但你需要服務器驗證無論如何,所以現在它可能是沒有在JavaScript中的自定義實現什麼好主意。

如果您需要它,請在github上找到一些javascript表單驗證庫。有很多。

或建立自己一個使用onchange事件或```onsubmit``對整個表單驗證。

p.s. <script language="JavaScript">語言已過時,類型也。很好。

+0

這很有幫助! – PujitM

+0

@PujitM然後請按照SO禮儀和upvote你找到有用的答案或標記爲「答案」,如果它回答你的問題。 – sznowicki

+0

我上傳之前,我評論 - 我只是沒有足夠的代表它顯示:( – PujitM

相關問題