[英]e.PreventDefault is Undefined
我有registerAjax(e)函數:
function registerAjax(e) {
e.preventDefault();
let userData = {
username: $("#username").val(),
password: $("#password").val(),
};
$.ajax({
method: "POST",
url: kinveyBaseUrl + "user/" + kinveyAppKey + "/",
headers: kinveyAppAuthHeaders,
data: userData,
success: registerSuccess,
error: handleAjaxError
});
function registerSuccess(userInfo) {
saveAuthInSession(userInfo);
showInfo('User registration successful.');
}
該函數由該函數調用
function registerUser() {
registerAjax();
當我運行該應用程序時,我收到控制台消息“ Uncaught TypeError:無法讀取未定義(…)的屬性'preventDefault'”
有解決此異常的簡便方法嗎?
function startApplication() {
//Bind The Form Submit Buttons
$(document).ready(function () {
$("#btnRegister").on('click', registerUser());
});
loadingBox();
//Bind the info / error boxes: hide on click
$("#infoBox, #errorBox").click(function () {
$(this).fadeOut();
});
}
這不會按照您認為的那樣做:
$("#btnRegister").on('click', registerUser());
這registerUser()
立即調用registerUser()
並將點擊處理程序設置為registerUser()
的返回值 ,該值不返回任何內容。 我懷疑你想要這個:
$("#btnRegister").on('click', registerUser);
函數名稱本身可以在傳遞給處理程序時用作表示函數的變量。 (或者在使用該函數做很多事情時,只需調用它即可。在JavaScript中,函數的類型與其他類型一樣,可以像任何變量一樣傳遞。)
此外 ,您需要將事件傳遞給其他函數。 默認情況下,點擊處理程序將傳遞給事件,因此您可以使用它:
function registerUser(e) {
// e is your event
}
對於您的情況,您希望將其傳遞給其他函數:
function registerUser(e) {
registerAjax(e);
// etc.
}
傳遞registerUser
引用而不是調用它:
$("#btnRegister").on('click', registerUser);
並將event
參數添加到registerUser
:
function registerUser(e) {
registerAjax(e);
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.