使用 jQuery 模糊函数从输入字段返回值

Posted

技术标签:

【中文标题】使用 jQuery 模糊函数从输入字段返回值【英文标题】:Return value from input field with the jQuery blur function 【发布时间】: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 处理程序中。 【参考方案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】:

这是目前的逻辑:

    初始化具有undefined 值的变量。 绑定一个在未定义节点执行的处理程序,变量仍然是undefined。 立即返回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。 我觉得展示如何从事件中获取价值就足够了。在我的答案中添加了呼叫功能。我正在打电话,所以当我走到我的笔记本电脑前时,我会进一步整理。 我明白了。这个答案是正确的,可以进一步改进。

以上是关于使用 jQuery 模糊函数从输入字段返回值的主要内容,如果未能解决你的问题,请参考以下文章

Java程序如何模糊匹配access数据库,然后access返回一个相应值

需要使用 jquery 对具有部分文本字段名称的值进行匹配并返回结果

在 JQuery 自动完成填充输入字段后调用新函数

从函数(未定义)jQuery / ifelse返回多个值

Mongodb模糊查询返回有查询到内容的字段?

输入类型文本字段值未返回确切文本