2011-11-21 147 views

回答

3

劫持按鈕點擊表單提交使用JavaScript。

這裏是很好的例子與jQuery:

$("#MyButton").click(function(e) { 

    //submit your form manually here 
    e.preventDefault(); 
}); 
14

我連接事件處理程序以某些按鈕,即改變該特定表格上的驗證器對象的設置。

$(".jsCancel").click(function (e) { 
    $(e.currentTarget).closest("form").validate().settings.ignore = "*" 
}); 

這對MVC3中的我很有用。

我不知道這是否能夠幫助你,但是由於我使用ajax表單,每次使用事件ajax成功取代ajax表單的內容時,我都必須將事件附加到這些按鈕上。即重新解析的形式和重視該事件的取消按鈕完整的代碼:

$(document).ajaxSuccess(function (event, xhr, settings) { 
    var $jQval = $.validator, adapters, data_validation = "unobtrusiveValidation"; 
    $jQval.unobtrusive.parse(document); 
    $(".jsCancel").click(function (e) { 
     $(e.currentTarget).closest("form").validate().settings.ignore = "*" 
    }); 
}); 
+0

謝謝。生成內容時,我通過向我的按鈕添加「取消」類來解決此問題。我對你有疑問這個選擇器意味着什麼「.jsCancel」?你試過用這個$(「。jsCancel」)。live(「click」,...而不是這個$(「。jsCancel」)。click(function(e)... – Sergii

+0

添加取消類沒有爲我而工作,因此我的解決方法是,我們通常在css類的前面添加js,如果它們用於查找元素而不是樣式,我將該類放在我的提交按鈕上,不應該驗證表單。 )或on()也可以工作,我只是不習慣使用它。 – Skymt

1

這是真正由tugberk答案評論,但評論並不表明代碼示例非常好。

某些瀏覽器版本不喜歡「preventDefault()」函數。通過這幾次被咬傷後,我添加了一個簡單實用的功能:

//Function to prevent Default Events 
function preventDefaultEvents(e) 
{ 
    if (e.preventDefault) { 
     e.preventDefault(); 
    } else { 
     e.returnValue = false; 
    } 
} 

你把它叫做到位「的preventDefault」像這樣的:

$("#CancelButton").on("click", function(event) { 
    preventDefaultEvents(event); 
    return false; 
}); 
1

您可以使用「取消」 CSS類。 例如:<input type="submit" value="Cancel" name="Cancel" class="cancel" />

JQuery.Validate處理下面的代碼的其餘部分:

// allow suppresing validation by adding a cancel class to the submit button 
this.find("input, button").filter(".cancel").click(function() { 
    validator.cancelSubmit = true; 
}); 
相關問題