Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery模糊函数从输入字段返回值_Javascript_Jquery_Events_Return_Onblur - Fatal编程技术网

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

Javascript 使用jQuery模糊函数从输入字段返回值,javascript,jquery,events,return,onblur,Javascript,Jquery,Events,Return,Onblur,目标:用户关注输入字段。用户在输入字段中写入一个值。当用户操作完成且输入字段不再处于焦点时,将插入的值保存到名为“inputFieldValue”的变量中。这应该通过调用函数“returnInputValue”来完成 html <!DOCTYPE html> <html> <head> <title>My test</title> </head> <body>

目标:用户关注输入字段。用户在输入字段中写入一个值。当用户操作完成且输入字段不再处于焦点时,将插入的值保存到名为“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>
当我在插入一个值并再次聚焦后从控制台调用变量inputFieldValue时,它仍然是“未定义的”


我错过了什么吗?

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

function returnInputValue() {
    var inputValue;
    $('.input').blur(function() {   
        inputValue = $('.input').val();
        return inputValue;
    });
}
正如一些人所建议的,甚至上面的代码都是不正确的。
inputValue
不起作用,因为它总是返回
undefined

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

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

function returnInputValue() {
    return inputValue;
}

尝试在函数外部声明变量

    <script>
       var inputValue;
        function returnInputValue() {

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

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

        });

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

var输入值;
函数returnInputValue(){
$('.input').blur(函数(){
inputValue=$('.input').val();
});
返回输入值;
}
var inputFieldValue=returnInputValue();

这是当前的逻辑:

  • 初始化具有
    未定义值的变量
  • 绑定在未定义连接处执行的处理程序,变量仍然是未定义的
  • 立即返回未定义的
  • 上述逻辑被破坏,应予以纠正。最好的选择是将最终逻辑移动到
    blur
    处理程序中:

     $('.input').blur(function() {   
        var inputValue = this.value;
        // do something with the value
        // ...
     });
    
    如果需要在某个时刻获取值,请查询DOM,选择元素并获取其值。

    您可以使用

    $(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()
    方法

    这种方法非常灵活。如果您要插入到数据库中,也可以使用jqueryajax在这里简单地完成


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

    尝试移动
    var inputValue外部功能您的操作是错误的。将逻辑移到
    blur
    处理程序中。您的第一个示例是错误的。
    return
    语句属于
    blur
    处理程序,而不是
    returnInputValue
    函数。
    returnInputValue
    返回
    undefined
    ,因为它没有
    return
    ed值。@Vohuman我已经更新了答案。你能删除否决票吗?我会删除第一个片段及其相关信息。应该注意的是,定义一个函数并返回一个预定义的值没有多大意义!我将取消否决票。我的否决票伤害了你的感情,很抱歉,但是错误的信息会伤害很多无辜的人。@Vohuman我已经清楚地说过,很多评论要求在
    blur
    事件中包含
    return
    ,这是错误的。他/她可以使用focus/blur调用他/她的函数,这是一个很好的建议,但是您没有提供足够的信息说明他/她为什么应该使用建议的代码段。我觉得展示如何从事件中获取价值就足够了。在我的答案中添加了调用函数。我在打电话,所以当我看到我的笔记本电脑时,tidy会进一步添加。我明白了。这个答案是正确的,可以进一步改进。我的问题因为批评答案而被否决的事实是没有道理的。
    $(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);
    });