Jak uzyskać wartość formularza HTML do przekazania do JavaScript?
Czy to jest poprawne? Mój skrypt pobiera dwa argumenty, jeden z pola tekstowego, drugi z pola rozwijanego.
<body>
<form name="valform" action="" method="POST">
Credit Card Validation: <input type="text" id="cctextboxid" name="cctextbox"><br/>
Card Type: <select name="cardtype" id="cardtypeid">
<option value="visa">Visa</option>
<option value="mastercard">MasterCard</option>
<option value="discover">Discover</option>
<option value="amex">Amex</option>
<option value="diners">Diners Club</option>
</select><br/>
<input type="button" name="submit" value="Verify Credit Card" onclick="isValidCreditCard(document.getElementById('cctextboxid').value,document.getElementById('cardtypeid').value)" />
</body>
javascript
html
user377419
źródło
źródło
Odpowiedzi:
HTML:
JS:
źródło
nameValue
jest to wartość domyślna, a nie to, co wprowadził użytkownik.Jeśli chcesz pobrać wartości formularza (takie jak te, które zostałyby wysłane za pomocą HTTP POST), możesz użyć:
JavaScript
form-serialize ( https://code.google.com/archive/p/form-serialize/ )
jQuery
źródło
FormData
sam w sobie nic nie robi… nadal musisz pobrać wartości z formularza.FormData.entries()
, aby pobrać wartości. PonadtoFormData.entries()
nie jest dostępny w Safari, Explorer ani Edge. developer.mozilla.org/en-US/docs/Web/API/FormDataformData.entries()
, zależy to od tego, czego szukasz. Jeśli szukasz wartości pojedynczego pola, możesz użyćformData.get(name)
. Odniesienie: get () .FormData
nic wydrukować w Chrome.Oto przykład z W3Schools:
Demo można znaleźć tutaj .
źródło
var obj = {};
sięvar obj = [];
.obj
, niezależnie od tego, który z nich zostanie wybrany. Problem został przedstawiony tutaj (wybierz „Opcja 1”) w3schools.com/code/tryit.asp?filename=GEZXJXBBI7AWdocument.forms
będzie zawierać tablicę formularzy na Twojej stronie. Możesz przeglądać te formularze, aby znaleźć żądaną formę.Każdy formularz ma tablicę elementów, przez którą można przejść w pętli, aby znaleźć żądane dane. Powinieneś także mieć do nich dostęp z nazwy
źródło
Moje 5 centów tutaj, za pomocą
form.elements
których możesz sprawdzać każde pole według jegoname
, a nie tylko iteracji:źródło
Rozwijając pomysł Atrura Klesuna ... możesz po prostu uzyskać do niego dostęp po nazwie, jeśli użyjesz getElementById, aby przejść do formularza. W jednej linii:
Użyłem go tak do przycisków radiowych i działało dobrze. Myślę, że tutaj jest tak samo.
źródło
To jest rozwinięty przykład https://stackoverflow.com/a/41262933/2464828
Rozważać
Załóżmy, że chcemy pobrać dane wejściowe nazwy
formula
. Można to zrobić poprzez przepuszczanieevent
wonsubmit
polu. Następnie możemy użyćFormData
do pobrania wartości tej dokładnej formy, odwołując się doSubmitEvent
obiektu.Powyższy kod JavaScript wydrukuje wartość danych wejściowych na konsoli.
Jeśli chcesz iterować wartości, tj. Pobrać wszystkie wartości, zobacz https://developer.mozilla.org/en-US/docs/Web/API/FormData#Methods
źródło
Kilka łatwych w użyciu serializatorów formularzy z dobrą dokumentacją.
W kolejności gwiazd na Githubie
jquery.serializeJSON
jquery-serialize-object
form2js
form-serialize
źródło
Spróbuj zmienić kod jak poniżej:
źródło
Szybkie rozwiązanie do serializacji formularza bez żadnych bibliotek
źródło
źródło