2013-07-24 49 views
0

我試圖驗證具有一些JavaScript代碼我已經寫了一個HTML表單,但是當我創建的形式與該標籤如何在HTML表單中使用onsubmit語句進行正確驗證?

<form name="inputForm" action="http://postcatcher.in/catchers/51eefe8cd1c7b60200000530" method="post" onsubmit="return validateForm()"> 

表單提交的沒有失敗,儘管違反在validateForm詳細的條件( )函數我寫了。我有四重檢查功能,我幾乎肯定沒有錯。我是否在這裏錯誤地使用了某種語法,或者在其他地方是我的問題?

編輯:這裏是validateForm()函數簡而言之

function validateForm() { 
if(document.inputForm.Title===null || document.inputForm.Title==="") { 
    alert("Title required"); 
    document.inputForm.Title.focus(); 
    return false; 
} 
} 

編輯2:問題是無關的代碼發佈的,我已經忘記設置一個id在表格中的字段的一個。

+2

請提交validateForm()代碼。然後我們可以看到幕後發生了什麼。 –

+0

它應該是標題而不是標題。 –

+0

@GauravSharma這就是我給它的名字,用大寫字母T. – macklin

回答

-3

不要添加事件(的onsubmit)到HTML元素,而不是使用事件處理程序:)我的母語JS是不是很好在這方面,我使用jQuery配發:

$(document).on('submit', '#form', function(event){ 
    if(validateForm() !== true){ event.preventDefault(); } 
}); 

那會是什麼所有的行:

document.getElementById("form").onsubmit=function(){ 
    return validateForm()}; 
} 

你確定你的函數返回true/false?因爲你的內聯代碼返回函數的返回值,你確定有嗎?

+0

我想要一個解釋,而不是默默無聞地下調。內聯事件處理是一個禁忌,我舉了一個如何在jQuery中實現它的例子,花時間找到如何在本地執行它並要求驗證他的函數是否有返回值。 – Martijn

1

我使用相同的邏輯來防止使用javascript進行雙擊。確保您的函數ValidateForm在表單無效時返回false。

我的例子:

function FirstSubmitOnly() 
    { 
     if (haveSubmitted) 
      return false; 

     haveSubmitted = true; 
     return true; 
    } 
+0

它返回false。我寫的函數與您的函數結構相似,但條件更多。 – macklin

+0

我的表單是:

工作正常。當你打開頁面時,你會得到任何JavaScript錯誤? – Sergio

+0

沒有javascript錯誤。當它失敗時,表單將被創建而不會失敗 – macklin

0

你必須使用value屬性從對象。

document.inputForm.Title.value 

所以,你的js應該像

function validateForm() { 
if(document.inputForm.Title.value===null || document.inputForm.Title.value==="") { 
    alert("Title required"); 
    document.inputForm.Title.focus(); 
    return false; 
} 
} 

此外,document.inputForm.Title.value永遠不會null。所以,如果條件下,

if(document.inputForm.Title.value==="") 

還將努力