2010-01-24 132 views
5

我在表單上有一些客戶端JavaScript驗證。它效果很好。但我想適應JavaScript禁用的用戶。我的驗證不是從窗體的onsubmit屬性運行的,它是綁定到窗體中的普通按鈕的事件處理程序。因此揭開序幕的驗證,並提交按鈕實際上不是一個提交,它只需鍵入=「按鈕」:僅當javascript禁用時,禁止提交事件/提交按鈕

<input type="button" value="Ok" class="okbtn"> 

然後我註冊一個事件處理程序,做我的驗證它的Click事件。它提出,如果一切經過:

function clickHandler(event){ 
    thisForm = event.data.caller 
    var valid = submitValidation(thisForm); 
    if (valid == true){ 
     thisForm.submit(); 
    } else{ 
     } 
} 

我的問題是,如果用戶有JS禁用,有沒有辦法提交表單。我可以製作按鈕type="submit",這將適用於JS禁用的用戶,但是它會*總是提交表單並繞過啓用了JS的用戶的驗證。 (驗證會運行,但它會提交)。如果我點擊按鈕type="submit",我可以阻止提交事件嗎?我正在使用JQuery,可以JQuery抑制提交?我希望我的驗證能夠處理它是否被提交。

回答

12

可以抑制由做類似提交點擊:

$('input[type=submit]').bind('click', function(e) { 
    e.preventDefault() // prevents the form from being submitted 
    clickHandler(); // the custom submit action 
}); 

或者,您可以抑制實際提交表單是這樣的:

$('form').bind('submit', function(e) { 
    e.preventDefault(); 
    // etc 
}); 
+0

甜。一行更改:) – Purrell 2010-01-24 01:39:28

3

您可以通過設置form元素中的onsubmit處理程序來抑制提交,如果驗證失敗,則返回false。

因此,如果驗證成功,您將返回true;如果失敗,則返回false,而不是調用thisForm.submit()

3

更改按鈕,一個正常的提交按鈕和綁定表單上的submit()事件的驗證檢查。

$("form").submit(function() { 
    if (!submitValidation()) { 
    return false; 
    } 
}); 

從文檔:

當用戶試圖 提交表單的submit事件被髮送到 元件。它只能附加 元素。形式可以是 提交或者通過點擊 明確<input type="submit"><input type="image">,或<button type="submit">,或按Enter鍵 當某些表單元素具有焦點。