【问题标题】:Return value from input field with the jQuery blur function使用 jQuery 模糊函数从输入字段返回值
【发布时间】:2015-12-16 11:46:33
【问题描述】:

目标:用户关注输入字段。用户在输入字段中写入一个值。当用户完成并且输入字段不再处于焦点时,将插入的值保存到名为“inputFieldValue”的变量中。这应该通过调用函数'returnInputValue'来完成。

html

<!DOCTYPE html>
<html>
    <head>
        <title>My test</title>  
    </head>
    <body>

        <input class="input" />

        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript" src="test.js"></script>

    </body>
</html>

test.js

function returnInputValue() {

    var inputValue;

    $('.input').blur(function() {   

        inputValue = $('.input').val();

    });

    return inputValue;

}

var inputFieldValue = returnInputValue();

当我在插入一个值并再次聚焦后从控制台调用变量 inputFieldValue 变量时,它仍然是“未定义”。

我错过了什么吗?

【问题讨论】:

  • 尝试将var inputValue; 移出函数
  • 你做错了。将逻辑移动到 blur 处理程序中。

标签: javascript jquery events return onblur


【解决方案1】:

你执行的函数是一个异步函数,即它基于input触发blur事件后的时间。您需要在 blur 事件中返回它:

function returnInputValue() {
    var inputValue;
    $('.input').blur(function() {   
        inputValue = $('.input').val();
        return inputValue;
    });
}

正如一些人所建议的那样,即使上面的代码也不正确。 inputValue 不起作用,因为它总是返回 undefined

或者,将其设置为直接访问最后一个blurred 值。

var inputValue = "Not Blurred Yet!";
$('.input').blur(function() {   
    inputValue = $('.input').val();
});

function returnInputValue() {
    return inputValue;
}

【讨论】:

  • 你的第一个例子是错误的。 returnstatement 属于 blur 处理程序而不是 returnInputValue 函数。 returnInputValue 返回 undefined,因为它没有 returned 值。
  • @Vohuman 我已经更新了我的答案。您可以删除反对票吗?
  • 我会删除第一个 sn-p 及其相关信息。需要注意的是,定义一个函数并返回一个预定义的值并没有多大意义!我将删除反对票。我的投票伤害了您的感受,对此深表歉意,但错误的信息可能会伤害许多无辜的人。
  • @Vohuman 我已经明确说过了,许多 cmets 要求在 blur 事件中包含 return,这是错误的。
【解决方案2】:

这是目前的逻辑:

  1. 初始化具有undefined 值的变量。
  2. 绑定一个在未定义节点执行的处理程序,变量仍然是undefined
  3. 立即返回undefined

上面的逻辑有问题,应该改正。最好的选择是将最终逻辑移到blur 处理程序中:

 $('.input').blur(function() {   
    var inputValue = this.value;
    // do something with the value
    // ...
 });

如果你需要在某个时刻获取值,查询DOM,选择元素并获取它的值。

【讨论】:

  • 我的问题因批评答案而被否决这一事实毫无意义。
【解决方案3】:

尝试在函数外声明变量

    <script>
       var inputValue;
        function returnInputValue() {

        $('.input').blur(function() {   

            inputValue = $('.input').val();

        });

        return inputValue;
   }
    var inputFieldValue = returnInputValue();
    </script>

【讨论】:

    【解决方案4】:

    你可以使用。

    $(document).on("blur","#Yourinput",function(){
       var Myval = $("#Yourinput").val();
       // Execute your code here I.e call your function 
       // ...
    // You do not even have to call you function put
    // It in a div to display 
    $("#yourdiv").html(Myval);
    //Will display it in a div
    //Or add to array
    Yourarray.push(Myval);
    });
    

    这使用 jQuery .on() 方法。

    这种方法非常灵活。如果您插入到数据库中,您可以在这里使用 jquery ajax 非常简单地做到这一点。

    你必须玩事件,即用另一个事件替换模糊,但如果你使用 jquery,我相信这是最简单的方法

    【讨论】:

    • 他/她可以使用焦点/模糊来调用他/她的功能
    • 嗯,这是个好建议,但您没有提供足够的信息说明为什么他/她应该使用建议的代码 sn-p。
    • 我觉得展示如何从事件中获取价值就足够了。在我的答案中添加了呼叫功能。我正在打电话,所以当我走到我的笔记本电脑前时,我会进一步整理。
    • 我明白了。这个答案是正确的,可以进一步改进。
    猜你喜欢
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多