2016-08-07 4 views
1

JavaScriptとJqueryコードでこのonclick関数が機能しない理由を理解しようとしています。ユーザー入力がキャプチャ/ストアされない

JavaScriptコードの "userInput"を参照し、 "userDate"という変数に格納しています。何らかの理由で、ユーザの入力が捕捉されたり記憶されたりしない。

これは私のHTMLです:

<form role="form"> 
 
      <p> Enter the date: 
 
      <input id="userInput" type="text" placeholder="yyyy-mm-dd" autofocus required></p> 
 
      <button id="convert" type="submit" class="btn btn-primary btn-lg" padding="center"> 
 
      <span class="glyphicon glyphicon-euro"></span> 
 
      </button> 
 
     </form>

これは私のJSコードです:

$(function() { 
 

 
    // cache the DOM element 
 
    var $currencies = $("#currencies"); 
 
    var $userInput = $("#userInput"); 
 

 
    // We are listening on the 'document', 
 
    // for a click on an element with an ID of #convert in the HTML 
 
    $("#convert").on("click", function() { 
 
    var userDate = $userInput; 
 
    // testing 
 
    console.log(userDate); 
 
    alert ("Handler for .click() is called."); 
 

 
    // AJAX call for GET request 
 
    $.ajax({ 
 
    type: 'GET', 
 
    url: 'http://xxx.xx', 
 
    success: function(currencies) { 
 
     console.log("success func is called"); 
 
     console.log(userDate); 
 
     $.each(currencies, function(i, currency){ 
 
     $currencies.append("<div> EUR: " + currencies.rates["EUR"] + ", date: " + currencies.date + "</div>"); 
 
     }); 
 
    }, 
 
    // error handling for my request 
 
    error: function() { 
 
     alert("error loading currencies"); 
 
    } 
 
    }); 
 
}); 
 
});

+0

'userDate'は.length = 1のjQueryオブジェクトにする必要があります...コンソールには何が出力されますか? –

+0

要素全体ではなく値が必要な場合は、 'var userDate = $ userInput.val();' – adeneo

+0

とすると、おそらく 'var userDate = $ userInput.val();'を実行したかったでしょう。それは –

答えて

3

変更

var userDate = $userInput; 

var userDate = $userInput.val(); 

に$ユーザ入力は、入力要素を保持するjQueryオブジェクトへの参照です。 .val()を使用すると、その入力要素のテキスト値が返されます。

+0

ちょうど何かを学んだ:私はあなたがjavascriptでドット演算子の周りにスペースを置くことができるか分からなかった。 –

+0

ありがとう@答えのために、これは動作します!また、Jaromanda Xとadeneoにも感謝します。乾杯! – Franco

関連する問題