2014-02-22 226 views
0

所以我試圖防止表單提交如果輸入是空的。代碼看起來像這樣:防止表單提交不起作用

$(document).on("submit", "form#input_form", function(e){ 
    if(!$(this).find("input[type=text]").val()){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    } 
}); 

這不起作用。即使它執行preventDefault和stopPropagation,該請求也會通過。

但是,如果我這樣做它成功地阻止提交:

$("form#input_form").on("submit", function(e){ 
    if(!$(this).find("input[type=text]").val()){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    } 
}); 

我不明白有什麼區別,它基本上是一回事,只是前者重視處理程序在文件級別,而後者會對形式本身產生影響。順便說一句,我使用form_for助手來渲染表單。

+0

對於我來說這兩個代碼片段都有效。 –

回答

0

嘗試使用Regular Expressions來驗證用戶的輸入。示例如下所示:

var userInputVal = $(this).find("input[type=text]").val(); 

// validate the user input. no error if user entered data with one or more characters. 
function validateUserInput() { 
    var n = /(\.){1,}/; // creates a regular expression object pattern. 
    if (n.test(userInputVal)) { 
     userInputError.hide(); // hide the error message if the user input is one or more characters 
     return true; 
    } else { 
     userInputError.show(); // show the error message if the user input is one or more characters 
     return false; 
    } 
}