Miałem działający kod, który mógł zresetować formularz po kliknięciu przycisku resetowania. Jednak po tym, jak mój kod się wydłuża, zdaję sobie sprawę, że już nie działa.
<div id="labels">
<table class="config">
<thead>
<tr>
<th colspan="4"; style= "padding-bottom: 20px; color:#6666FF; text-align:left; font-size: 1.5em">Control Buttons Configuration</th>
</tr>
<tr>
<th>Index</th>
<th>Switch</th>
<th>Response Number</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<form id="configform" name= "input" action="#" method="get">
<tr><td style="text-align: center">1</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" value="" id="number_one"></td>
<td><input style="background: white; color: black;" type="text" id="label_one"></td>
</tr>
<tr>
<td style="text-align: center">2</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" id = "number_two" value=""></td>
<td><input style="background: white; color: black;" type="text" id = "label_two"></td>
</tr>
<tr>
<td style="text-align: center">3</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" id="number_three" value=""></td>
<td><input style="background: white; color: black;" type="text" id="label_three"></td>
</tr>
<tr>
<td style="text-align: center">4</td>
<td><img src= "static/switch.png" height="100px" width="108px"></td>
<td id="small"><input style="background: white; color: black;" type="text" id="number_four" value=""></td>
<td><input style="background: white; color: black;" type="text" id="label_three"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" id="configsubmit" value="Submit"></td>
</tr>
<tr>
<td><input type="reset" id="configreset" value="Reset"></td>
</tr>
</form>
</tbody>
</table>
</div>
I moja jQuery:
$('#configreset').click(function(){
$('#configform')[0].reset();
});
Czy jest jakieś źródło, które powinienem zawrzeć w moich kodach, aby .reset()
metoda zadziałała? Wcześniej korzystałem z:
<script src="static/jquery.min.js">
</script>
<script src="static/jquery.mobile-1.2.0.min.js">
</script>
i .reset()
metoda działała.
Obecnie używam
<script src="static/jquery-1.9.1.min.js"></script>
<script src="static/jquery-migrate-1.1.1.min.js"></script>
<script src="static/jquery.mobile-1.3.1.min.js"></script>
Czy to może być jeden z powodów?
javascript
jquery
forms
reset
Yvonnezoe
źródło
źródło
Odpowiedzi:
możesz spróbować użyć łącza referencyjnego trigger ()
źródło
http://jsfiddle.net/8zLLn/
Umieść to w skrzypcach JS. Działa zgodnie z przeznaczeniem.
Zatem żadna z wyżej wymienionych kwestii nie jest winna. Może masz problem z identyfikatorem? Czy kliknięcie faktycznie się wykonuje?
Edycja: (ponieważ jestem smutnym workiem bez odpowiedniej umiejętności komentowania) To nie jest problem bezpośrednio z twoim kodem. Działa dobrze, gdy wyjmiesz go z kontekstu strony, której aktualnie używasz, więc zamiast być czymś związanym z konkretnymi danymi jQuery / javascript i przypisanymi formularzami, musi to być coś innego. Zaczynam dzielić kod na dwie części i próbować dowiedzieć się, co się dzieje. Chodzi mi o to, żeby „upewnić się”, przypuszczam, że mógłbyś ...
w funkcji kliknięcia i upewnij się, że jest ona kierowana na właściwą formę ...
a jeśli tak, to musi być coś, czego tu nie ma.
edytuj część 2: Jedną z rzeczy, które możesz wypróbować (jeśli nie jest to celowane prawidłowo), jest użycie „input: reset” zamiast tego, czego używasz ... sugeruję, ponieważ to nie cel nieprawidłowo działa, aby się dowiedzieć jakie jest rzeczywiste kliknięcie. Po prostu otwórz narzędzia firebug / deweloperów, co cię wrzuci
i zobacz, co się pojawi. i wtedy możemy zacząć stamtąd.
źródło
$('#ptest').html("clicked reset")
w kliknięciu (funkcja () {}); gdzie powinien pokazywać „kliknięty reset”, ale się nie pojawił[0]
wybiera pierwszy element. Ale w jQuery wybiera rzeczywisty HTML elementu. Tak,[0]
daje Ci html, który pozwala połączyć się z html, nie jQuery, metoda nazwiereset
. Aby uzyskać więcej informacji, zobacz odpowiedź @kevin poniżej.Według tego posta tutaj , jQuery ma
reset()
metodę; ale natywny JavaScript tak. Tak więc przekonwertuj element jQuery na obiekt JavaScript, używając:źródło
Jest to jedna z tych rzeczy, które w rzeczywistości łatwiej zrobić w waniliowym JavaScript niż jQuery. jQuery nie ma
reset
metody, ale element formularza HTML ma, więc możesz zresetować wszystkie pola w formie takiej jak ta:Jeśli zrobisz to za pomocą jQuery (jak widać w innych odpowiedziach tutaj:)
$('#configform')[0].reset()
,[0]
pobierze ten sam element DOM formularza, który uzyskałbyś bezpośrednio przezdocument.getElementById
. To drugie podejście jest zarówno bardziej wydajne, jak i prostsze (ponieważ dzięki podejściu jQuery najpierw dostajesz kolekcję, a następnie musisz pobrać z niej element, podczas gdy w waniliowym JavaScript po prostu dostajesz ten element bezpośrednio).źródło
Przycisk resetowania nie wymaga żadnego skryptu (ani nazwy ani identyfikatora):
i jesteś skończony. Ale jeśli naprawdę musisz użyć skryptu, zauważ, że każda kontrolka formularza ma właściwość formularza, która odwołuje się do formularza, w którym się znajduje, dzięki czemu możesz:
Ale przycisk resetowania jest znacznie lepszym wyborem.
źródło
W końcu rozwiązałem problem !! @RobG miał rację co do
form
tagu itable
tagu. tag powinny być umieszczone na zewnątrz tabeli. z tym,form
działa bez potrzeby jquery lub czegokolwiek innego. wystarczy kliknąć przycisk i tadaa ~ cała forma jest resetowana;) genialne!
źródło
form
tag został automatycznie zamknięty na początku, ztbody
wyłączeniem elementów wejściowych.Używam tego prostego kodu:
źródło
Za pomocą funkcji jquery .closest (element) i .find (...) .
Zdobycie elementu nadrzędnego i poszukiwanie dziecka .
Na koniec wykonaj potrzebną funkcję.
źródło
$("#form").find("input[type=text], textarea").val("");
zrobiłem w ten sposóbPierwszy wiersz zresetuje dane wejściowe formularza
Drugi zresetuje select2
Opcjonalnie: możesz z tego korzystać, jeśli masz różne typy zarejestrowane z różnymi zdarzeniami
źródło
Szybki reset pól formularza jest możliwy dzięki tej funkcji resetowania jQuery.
kiedy otrzymasz odpowiedź powodzenia, uruchom poniżej kodu.
$(selector)[0].reset();
źródło
Możesz po prostu dodać typ wejścia = reset z id = resetform w ten sposób
następnie za pomocą jquery po prostu użyj funkcji .click () na elemencie o id = resetform w następujący sposób
i formularz resetuje się Uwaga: Możesz także ukryć przycisk resetowania za pomocą id = resetform przy użyciu css
źródło
Oto proste rozwiązanie z Jquery. Działa globalnie. Spójrz na kod.
Dodaj wyraźną klasę do przycisku w każdej formie, którą musisz zresetować. Na przykład:
źródło
jQuery nie ma
reset()
metody; ale natywny JavaScript tak. Tak więc przekonwertuj element jQuery na obiekt JavaScript, używając:Możemy po prostu użyć kodu JavaScript
źródło
Najprostszy sposób, w jaki mogę myśleć, jest solidny. Umieść w znaczniku formularza.
źródło
Możesz użyć następujących.
Następnie wyczyść formularz:
źródło
Twój kod powinien działać. Upewnij się, że
static/jquery-1.9.1.min.js
istnieje. Możesz także spróbować przywrócićstatic/jquery.min.js
. Jeśli to rozwiązuje problem, oznacza to, że problem został zidentyfikowany.źródło
configform
). Powinieneś przeprowadzić dochodzenie za pomocą konsoli. Najpierw spróbować$
. Jeśli używasz Chrome, wpisanie$
w konsoli aktywuje listę kontekstową, jeśli jQuery jest załadowane. Jeśli wpiszesz$
i naciśniesz Return, funkcja oceni, czy jQuery jest załadowane. Następna próba$("#configform")
. Kliknij wynik prawym przyciskiem myszy i wybierzReveal in Elements panel
.