Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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_Scope - Fatal编程技术网

Javascript jQuery事件中输入的值返回未定义

Javascript jQuery事件中输入的值返回未定义,javascript,jquery,scope,Javascript,Jquery,Scope,我有两个单独的js文件。其中一个名为服务,我在其中定义输入字段并使用它运行一些jQuery。另一个文件调用服务并处理返回的值 如果我在函数中使用该值(在服务中),它将返回正确的值。否则,在我的secound文件中,它会返回undefined,因为如果调用该函数,它似乎不会等到触发.change事件 Services.js var service = { main: function() { console.log(service.input); },

我有两个单独的js文件。其中一个名为
服务
,我在其中定义输入字段并使用它运行一些jQuery。另一个文件调用
服务
并处理返回的值

如果我在函数中使用该值(在
服务
中),它将返回正确的值。否则,在我的secound文件中,它会返回undefined,因为如果调用该函数,它似乎不会等到触发
.change
事件

Services.js

var service = {

    main: function() {
        console.log(service.input);
    },

    init: function( input ) {
        service.input = input;
    },

    getInputValue: function() {
        $('#' + service.input).change(function() {
            return $('#' + service.input).val();
        });
    }
}; 
OtherJsFile.js

$(function(){
    var inputField;

    service.init('inputId');
    inputField = service.getInputValue();

    //Should print the value of inputId
    //Instead it prints undefined
    console.log(inputField);
});

谢谢你的帮助

一个问题是,在更改处理程序内部返回的内容只返回事件处理程序函数,而不返回外部
getInputValue
。因此,
getInputValue()
没有返回任何内容。。。这就是为什么你会看到未定义的

下一个问题是,当您试图获取该值时,事件尚未发生


老实说,我不确定您在这里想要完成什么

您没有从
getInputValue()
返回任何内容,您只是从更改处理程序返回了一些内容(除非返回false,否则它不会做任何事)。默认情况下,如果没有返回值,JavaScript返回undefined-这就是为什么
inputField=undefined
。您可能应该将函数更改为
return$(“#”+service.input).val()谢谢你的回答。这对我没有帮助,我需要这个jQuery事件我想你真的误解了你要做的事=|我试图减少冗余,因为我需要
。不止一次地更改
事件。而该值将用于一些ajax请求,要求更改处理程序具体做什么?也许您需要一个回调数组来传递到变更处理程序中。然后循环遍历该数组并调用它们。或者使用一些自定义事件我的目的是获取用户可以填写的输入字段的最终值。例如:用户类型在“Hello World”中,我收到这个值,可以将它用于我的ajax post请求。无论如何,这不是我唯一的输入字段。我有一些,但你只需要价值。添加更改事件侦听器的逻辑没有意义,除非该事件需要触发一些ajax。无论如何,感谢您的回答。我会设法解决这个问题。