2017-02-02 20 views
0

我有兩個單獨的js文件。其中一個名爲services的地方,我定義了輸入字段並運行一些jQuery。另一個文件調用services並使用返回的值。在jQuery事件中輸入的值返回undefine

如果我使用函數內的值(在services中),它會返回正確的值。否則,我謝勝利文件,它不會返回不確定,因爲它似乎是,如果我叫功能,它不會等到.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); 
}); 

我感謝任何幫助!

+0

你是不是從'getInputValue()'返回的任何事情,你只能從改變處理程序返回的東西(它不會做任何事情除非返回false)。默認情況下,如果沒有返回值,JavaScript返回undefined - 這就是爲什麼'inputField = undefined'。你應該改變你的函數''返回$(「#」+ service.input).val();' – mhodges

+0

感謝您的回答。這不會幫助我,我需要這個jQuery事件 – thissven

+1

我認爲你真的誤解你正在嘗試做什麼= | – mhodges

回答

0

一個問題是你在變更處理程序中返回的內容只返回到事件處理函數,而不是返回到外部getInputValue。所以沒有什麼是從getInputValue()返回......這就是爲什麼你看到未定義。

下一個問題是當您嘗試獲取該值時尚未發生的事件。

說實話,我不知道你是想在這裏完成

+0

我嘗試減少冗餘,因爲我不止需要一次'.change'事件。並且該值將用於某些ajax請求 – thissven

+1

需要更改處理程序來做什麼?也許你需要一個回調數組傳遞給更改處理程序。然後循環訪問該數組並將它們全部調用。或者使用一些自定義事件 – charlietfl

+0

我的意圖是獲取可由用戶填寫的輸入字段的最終值。例如:「Hello World」中的用戶類型我收到了這個值,可以用它用於我的ajax post請求。無論如何,它不是我唯一的投入領域。我有幾個。 – thissven