是否可以从keyup函数获取返回类型?

时间:2013-10-24 07:50:48

标签: javascript jquery

我当前的代码就是这个,我正在尝试看看是否可以在键完成后获得返回值。

$("#confirm").keyup(function(event){
    event.preventDefault();
    ajax_pass_check();

});

所以我最终得到类似的东西,因为我的ajax_pass_check();函数返回true / false。

$("#confirm").keyup(function(event){
    event.preventDefault();
    return ajax_pass_check();

});

我想知道我是否可以这样做,并尝试类似

的内容
var one = $("#confirm").keyup(function(event){
    event.preventDefault();
    return ajax_pass_check();

});

我是javascript的新手,我在google上看了一段时间,但我还没找到我需要的东西,所以我想我会问。然而,当我尝试这样做时,我没有得到我希望的预期结果。由于var one仍为false,因此在函数true之后应为ajax_pass_check();

〜编辑:我接受了你们其中一个人的建议(感谢所有的回复!)我仍然无法弄清楚为什么我的var one变量为false,即使我在keyup函数中将其设置为true。 / p>

$(document).ready(function(){
    var one = false;

    $("#confirm").keyup(function(event){
    event.preventDefault();
    one = ajax_pass_check();
    //one = true; //even if I do that it doesn't work.
    });

    if(one == true)
    {
        $('input[type="submit"]').removeAttr('disabled');
    }
    else
    {
        $('input[type="submit"]').attr('disabled','disabled');    
    }
});

3 个答案:

答案 0 :(得分:2)

您应该考虑为变量使用全局范围,并在函数内设置其所需的值,而不是返回值:

var wasSuccessful = false;

$("#confirm").keyup(function(event){
   event.preventDefault();
   your_function();
});

function yourfunction() {
  if your awesome code worked { wasSuccessful = true; }
  else { wasSuccessful = false; }
}

答案 1 :(得分:1)

不,但你可以调用另一个函数来使用ajax_pass_check的结果。例如,

$("#confirm").keyup(function(event){
    event.preventDefault();
    doSomethingElse(ajax_pass_check());

});

function doSomethingElse(keyUpOk) {   // Do something  ... }

假设(根据您的函数名称)您正在使用它来进行某种形式的验证,这将允许您显示或清除错误消息。

你不能做的原因

var one = $("#confirm").keyup(function(event){
    event.preventDefault();
    return ajax_pass_check();

});

是因为key up函数只是将你的函数绑定到事件,所以当代码被释放时,这段代码就已经被执行了。您可能希望调用一个函数,以便在触发keyup事件后使用keyup事件处理程序的结果完成某些操作,而不是在函数绑定到事件时。

试试这个

$(document).ready(function(){
var one = false;

$("#confirm").keyup(function(event){
  event.preventDefault();
  one = ajax_pass_check();
  //one = true; //even if I do that it doesn't work.

  if(one == true)
  {
      $('input[type="submit"]').removeAttr('disabled');
  }
  else
  {
      $('input[type="submit"]').attr('disabled','disabled');    
  }
});
});

答案 2 :(得分:0)

答案是:否

jQuery Function keyup不返回特殊值,只返回jQuery Object see the API(在顶部),因为它仅用于绑定函数。

screenshot

依靠您想要实现的目标,其他人提到的解决方案之一可以解决您的问题。