javascript - 影响父函数的函数

标签 javascript jquery

我有一个函数:

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/

相关文章:

javascript - 在html音频javascript中复制汽车引擎声音

javascript - 单击按钮时运行 Controller 方法 MVC4 C#

jquery - 使用 .not() 方法禁用悬停事件

javascript - 通过 javascript 添加分页符

javascript - Catch-22 递归 Node 模块在使用 Mocha 时崩溃

javascript - knockout.js foreach,构建具有 2 n 个深数组的 ListView

jquery .text() 未确定的字符串文字

jquery - 从主提交表单

javascript - 如何使用 JavaScript 更新/更改 HTML 内容并防止页面刷新?

javascript - 在 Joomla 中加载脚本标签的问题