2016-05-13 68 views
0

在JavaScript中,我應該創建一個函數來檢查表單中的文本字段是否爲空。如果是,用戶點擊提交,用戶將不被允許繼續。我在w3schools上找到了我認爲合適的解決方案(http://www.w3schools.com/js/js_validation.asp)。我查過了比我記得更多的時間,一切似乎都是按順序的,但它不工作!相反,當單擊提交按鈕時,該網站調用不同的功能,我在它是不應該做的JavaScript ...表單驗證textfield無法正常工作?

HTML代碼

Other code 
<p> 
    <form method="post" name="form" action="" onsubmit="return validateName()"> 
    <label for="fullName">Namn: </label><input id="fullName" class="text" name="namn" type="text"> </input> 
</p> 
<p> 
    <label for="epost">Epost: </label><input id="epost" class="text" name="epost" type="email"> </input> 
</p> 
<p> 
    <input id="submit" type="submit" value="Skicka"> </input> 
</p> 
</form> 
Other code 

Javascript代碼

function validateName() { 
    var a = document.forms["form"]["namn"].value; 
    if (a == null || a == "") { 
     alert("Name required"); 
     return false; 
    } else { 
     return true; 
    } 
} 

點擊提交按鈕應該調用上面的這個函數(validateName),而是調用這個函數:

function alert() { 
    return confirm("Do you really wish to leave this website?"); 
} 

我已經多次查看了我的代碼,找不到任何似乎不合適的東西。你們能找到任何錯誤嗎?也許建議解決方案,解決我的問題,所以我的功能將正常工作?

如果有人能幫我解決這個問題,我將不勝感激!

+0

嘗試註釋掉該報警功能。你的控制檯會出錯,你可以找出它從哪裏被調用。 – RayfenWindspear

+0

另請注意,通過調用「alert」函數,您可以覆蓋默認警報函數。相反,您應該使用var alert = function(){}將您的函數定義封裝在本地化範圍內。 默認情況下,Javascript在全局範圍內聲明函數。 – RayfenWindspear

+0

我明白了!應該看到我意外地將我的功能命名爲默認功能。謝謝! – Isus

回答

0

alertpredefined function您正在使用正確的一次錯誤的第二次。只需更改姓名您alert功能的別的東西,或只是使用confirm,因爲它是intended並離開了function alert部分

正確:

alert("Name required"); 

錯誤:

function alert() { 
    return confirm("Do you really wish to leave this website?"); 
} 

解決辦法之一就是做到這一點:

function confirm_leaving(){ 
    return confirm("Do you really wish to leave this website?"); 
} 
+0

我明白了!應該看到,儘管我盯着它很長一段時間,但我可能已經失明瞭。非常感謝你!您的解釋很容易理解,尤其是代碼示例和「您的」。簡短而有效。 – Isus

+0

我改變了它,現在它的工作完美。 – Isus

0

這是因爲您正在調用validateName函數中的alert函數。

function validateName() { 
    var a = document.forms["form"]["namn"].value; 
    if (a == null || a == "") { 
     alert("Name required"); //<- remove this 
     return false; 
    } else { 
     return true; 
    } 
} 
+0

那麼,我想打電話給警報功能。只是不是我自己的,而是默認的。我現在看到的錯誤是我將我的函數命名爲預定義的函數,因此錯誤。 – Isus

0

嗯,我想你可以把這個代碼,而不是如此:功能validateName(){ 要糾正此只是把這個命令: 功能validateName(本){

+0

我的代碼不起作用的原因是因爲我將其中一個函數命名爲預定義函數。當我調用'alert()'函數時,這就搞砸了。但我現在解決了它。 – Isus