現在の問題は、ページが読み込まれるとすぐに、作成したコードが実行されることです。
コードの外観から、実際にはフォームのボタンでコンソール ログを実行したいように見えます。
コードを少し変更しましたが、次のようにします。
- フォームと入力を選択
- 変数をスコープ外に宣言する
- フォームの送信イベントにバインドする
- 実際に送信しないようにする
- 例ごとにコンソールにログを記録する
以下の変更されたコード:
<script>
$(function() {
// Save a reference to the input
var input = $("input[name=first_name]"),
// Get the form itself
form = $("form[name=info]"),
// Storage for your first_name outside of the scope
first_name = false;
// Bind to the submit event on the form
form.bind('submit', function() {
// Set the first_name to the input's value
first_name = input.val();
// Log it out (per your example)
console.log(first_name);
// Return false to prevent the form from posting
return false;
});
});
</script>
<div id="content">
<form name="info">
First Name:
<input type="text" id="first_name" name="first_name">
<input type="submit" id="button">
</form>
</div>
フォームで何をしようとしても、これが最善の方法であると言っているわけではありません。現実的には、ボタンに ID は必要ありません。おそらく、フォームの NAME を ID に置き換えた方がよいでしょう。セレクター。また、ID セレクターはセレクターよりも高速であるため、ID セレクターを使用して入力を取得することもお勧めします[name=something]
。( Gnarfさん、コメントありがとうございます!)
変数のスコープもおそらくあなたの例ではやや奇妙ですが、上記のコードは学習に適しているはずです:)