2017-05-09 1 views
0

HTML ist recht einfach:Warum zieht mein JS den Wert nicht richtig aus dem Formular? in Frage

<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'); 
}); 

Als ich senden Sie das Formular (entweder durch Eingabe drücken oder das Symbol einreichen klicken, die Seite neu geladen, sondern mit der Standardeinstellung (zB mit 'Seattle, wa als Standardargument für die getsWeather-Funktion). Ich brauche es, um alles in das Eingabefeld zu ziehen und dieses als Argument in der getsWeather-Funktion zu verwenden, das aber momentan nicht funktioniert.

Irgendwelche Ideen? Lassen Sie mich wissen, wenn Sie mehr Code benötigen, um es zu verstehen

+0

Also Frage, finden Sie die Seite neu laden, um fehlerhaft zu sein oder ist das, wie der Code funktionieren soll? Wenn der Buggy fehlerhaft ist, müssen Sie verhindern, dass das Formular gesendet wird. Andernfalls wird die gesamte Arbeit zurückgesetzt – Sagar

+0

Ist das, weil es das gesamte Skript jedes Mal neu lädt, obwohl ich es nur dazu ersuche, es mit dem Wert neu zu laden, den der Benutzer in das Formular eingibt? – pmath325

+0

@Jamiec Ehrlich gesagt bin ich mir nicht sicher, seit ich ein Anfänger bin. Ich verwende das http://simpleweatherjs.com/framework. – pmath325

Antwort

3

Wenn Sie die Seite ändern möchten, müssen Sie verhindern, dass das Formular übermittelt wird, wenn Sie auf die Schaltfläche klicken. Zwei Möglichkeiten, das zu tun:

  1. hinzufügen return false bis Ende Ihrer click-Handler für die Schaltfläche. Dies verhindert die Formularübergabe (wenn JavaScript auf dem Client aktiviert ist).

  2. Fügen Sie type="button" zu der Schaltfläche hinzu, so dass es keine Absenden-Schaltfläche mehr ist.

Idealerweise würden Sie # 1 mit der Handhabung ein Formular Vorlage kombinieren, wenn der Kunde JavaScript nicht hat, konnte die kleine Anzahl von Menschen zu behandeln, die mit JavaScript surfen über das Formular Vorlage deaktiviert beim Umgang mit JavaScript- aktiviert Clients mit dem In-Page-Update.

+0

Dies funktionierte für die Schaltfläche. Wie füge ich das ähnlich zur Eingabe hinzu, so dass, wenn der Benutzer drückt, das Gleiche passiert? – pmath325

+0

@ pmath325 behandeln in ähnlicher Weise die 'Form' submit und gibt auch false zurück. Ich bin sicher @ T.J. wird mit Details aktualisiert. – Jamiec

+0

@Jamiec ihr seid toll. Eine Erklärung, warum das funktioniert? Was macht das Einreichen, das macht es so, dass ich die Rückkehr falsch haben muss? – pmath325

Verwandte Themen