[英]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.