我有一个函数:
function validateForm() {
var result = ''
$.get(
'/auth_validate_username/',
{ 'result': result },
function(data) {
if (data!=='') {
// make function validateForm return false
}
}
);
};
我想知道是否有一种方法可以在我的条件下执行某些操作,并将应用于 get
请求上方的函数。
我真正想要做的是,如果在我的 get 请求中满足我的条件,那么函数 validateForm()
返回 false。
有没有办法做到这一点?
编辑: 这是我试过的
js:
var validateResult;
$('#but_id').click(function(event){
validateForm().done(function(){
if(!validateResult)
event.preventDefault();
});
})
function validateForm() {
var result = ''
return $.get(
'/auth_validate_username/',
{ 'result': result },
function(data) {
if(data!==''){
validateResult = false;
}
}
);
};
html:
<form method="post" onsubmit="return validateForm();">
<input id='username' type="text" name="username"/>
<button type="submit" id='but_id'>Submit</button>
</form>
最佳答案
我假设你正在尝试做这样的事情:
if (validateForm()) {
doSomething();
}
else {
displayError();
}
相反,只需这样做:
function validateForm(){
//...
$.get(
'/auth_validate_username/',
{ 'result': result },
success: function(data) {
doSomething();
},
error: function(data) {
displayError();
}
);
}
您只需确保您的服务器做出相应响应。即,您的服务器不应为每个对 /auth_validate_username
的请求生成成功的 200
响应。
$.get
只是 $.ajax()
的简写.在文档中阅读有关回调的更多信息。
根据您的评论!
function doSomething(data, textStatus, jqXHR) {
$('form').submit();
}
function displayError(jqXHR, textStatus, errorThrown){ ... }
function validateForm(event){
$.ajax(
url: '/auth_validate_username/',
data: {"result": result},
success: doSomething,
error: displayError
);
return false; // prevent default form submit
}
$('form').submit(validateForm);
如果从一开始就知道这是您的目标,那就太好了。
关于javascript - 影响父函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13987954/