2017-05-09 4 views
0

問題のHTMLは非常に単純です:JSがフォームから適切に値を引っ張ってくれないのはなぜですか?

<form> <input type="text" name="locSearch" id="locSearch" /> <button id="locSearchBtn"><i class="fa fa-search" id="search-icon"></i></button> </form>

JS:

$(document).ready(function() { 
getsWeather('seattle, wa', 'f'); 
$("#locSearchBtn").click(function() { 
    getsWeather(document.getElementById('locSearch').value, 'f'); 
}); 

私は、フォーム(Enterキーを押してか、ページのリロード、アイコンを提出クリックして、しかし、とのいずれかを送信するとデフォルトの設定(つまり、 'Seattle、getsWeather関数のデフォルト引数としてwa)。入力ボックスにあるものをすべて取得し、それをgetsWeather関数の引数として使用する必要がありますが、現在動作していません。

アイデア?

+0

質問があるので、ページの再読み込みがバグであるか、コードがどのように動作するはずですか?バグがある場合は、フォームが送信されないようにする必要があるためです。それ以外の場合はすべての作業がリセットされます – Sagar

+0

これは、ユーザーがフォームに入力した値を再ロードするよう求めているにもかかわらず、毎回スクリプト全体がリロードされるためですか? – pmath325

+0

@Jamiec正直なところ、私は初心者だから分からない。私はhttp://simpleweatherjs.com/フレームワークを使用しています。 – pmath325

答えて

3

ページを変更する場合は、ボタンをクリックしたときにフォームが送信されないようにする必要があります。それを行うには、2つの方法:

  1. は、ボタンのためのあなたのclickハンドラの最後にreturn falseを追加します。これにより、フォーム提出が妨げられます(JavaScriptがクライアント上で有効になっている場合)。

  2. type="button"をボタンに追加すると、送信ボタンではなくなります。

理想的には、あなたがJavaScript-の処理中にフォームの送信を経由して無効にJavaScriptでサーフィン少数の人々を処理するために、クライアントはJavaScriptが有効になっていない場合はフォームの送信を処理して1位を結合したいですページ内更新を使用してクライアントを有効にします。

+0

これはボタンに対して機能しました。同様に、これを入力に追加して、ユーザーがEnterキーを押したときに同じことが起こるようにしますか? – pmath325

+0

@ pmath325も同様に 'form' submitを処理し、falseも返します。私は確かに@ T.J。詳細が更新されます。 – Jamiec

+0

@Jamiecあなたたちは素晴らしいです。なぜこれが機能するのか説明?それは何をしているのですか?私は返品を偽にする必要がありますか? – pmath325

関連する問題