Próbowałem ustawić wartość ukrytego pola w formularzu przy użyciu jQuery, ale bez powodzenia.
Oto przykładowy kod wyjaśniający problem. Jeśli zachowam typ wejściowy jako „tekst”, działa to bez żadnych problemów. Ale zmiana typu danych wejściowych na „ukryty” nie działa!
<html>
<head>
<script type="text/javascript" src="jquery.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("input:text#texens").val("tinkumaster");
});
});
</script>
</head>
<body>
<p>
Name:
<input type="hidden" id="texens" name="user" value="texens" />
</p>
<button>
Change value for the text field
</button>
</body>
</html>
Próbowałem także zastosować następujące obejście, ustawiając typ wprowadzania na „tekst”, a następnie używając stylu „display: none” dla pola wprowadzania. Ale to też się nie udaje! Wygląda na to, że jQuery ma pewne problemy z ustawieniem ukrytych lub niewidocznych pól wprowadzania.
Jakieś pomysły? Czy istnieje obejście tego problemu, które faktycznie działa?
źródło
val()
działa dobrze na ukrytym wejściu, zmieniając wartość z „niezmieniony” na „zmieniony”. ZmieniłemJeśli masz problem z ustawieniem wartości ukrytego pola, ponieważ przekazujesz mu identyfikator, oto rozwiązanie:
Zamiast po
$("#hidden_field_id").val(id)
prostu zrobić$("input[id=hidden_field_id]").val(id)
. Nie jestem pewien, jaka jest różnica, ale działa.źródło
Wreszcie znalazłem rozwiązanie, które jest proste:
Działa jak marzenie. Nie ma pojęcia, dlaczego jQuery do tego nie wraca.
źródło
type="radio"
. Jestem zbyt leniwy, aby zgłosić problem, zwłaszcza że rozwiązałem ten problem 4 lata temu. Jestem również rozdarty, jeśli należy to naprawić w jQuery - być może jest to zaimplementowane w taki sposób, aby chronić dzieci jQuery przed sobą? Kto wie ...Miałem ten sam problem. co dziwne, Google Chrome i być może inni (nie pewni) nie lubili
(brak zmiany)
(brak zmiany)
ale to działa !!!!
ZMIANY!!
ZMIANY!!
musi być „sznurkiem”
źródło
.val(' 0')
, że został poprawnie przeanalizowany przezparseInt
JavaScript, a takżeint()
Python, mój backend.pracował dla mnie, kiedy żaden
ani
zrobił.
źródło
.val nie działał dla mnie, ponieważ chwytam atrybut serwera wartości i wartość nie zawsze jest aktualizowana. więc użyłem:
Mam nadzieję, że to komuś pomoże.
źródło
W rzeczywistości jest to ciągły problem. Podczas gdy Andy ma rację co do pobranego źródła, .val (...) i .attr ('wartość', ...) nie wydają się tak naprawdę modyfikować HTML. Myślę, że to problem z javascript, a nie problem z jquery. Gdybyś użył buga ognia, nawet ty miałbyś to samo pytanie. Chociaż wydaje się, że jeśli prześlesz formularz ze zmodyfikowanymi wartościami, przejdzie on, ale HTML nie zmieni się. Natknąłem się na ten problem, próbując utworzyć podgląd wydruku zmodyfikowanego formularza (robiąc [form] .html ()) kopiuje wszystko w porządku, w tym wszystkie zmiany opróczwartości się zmieniają. Tak więc mój modalny podgląd wydruku jest nieco bezużyteczny ... moim obejściem może być „zbudowanie” ukrytego formularza zawierającego wartości, które dodali, lub wygenerowanie podglądu niezależnie i wprowadzanie każdej modyfikacji przez użytkownika również modyfikuje podgląd. Oba są nieoptymalne, ale chyba, że ktoś zorientuje się, dlaczego zachowanie ustalające wartości nie zmienia html (zakładam, że w DOM) musi to zrobić.
źródło
Miałem ten sam problem i dowiedziałem się, co było nie tak. Miałem HTML zdefiniowany jako
Odczyt wartości formularza na serwerze zawsze powodował, że e-mail był pusty. Po podrapaniu się w głowę (i licznych poszukiwaniach) zdałem sobie sprawę, że błędem było nieprawidłowe zdefiniowanie formy / danych wejściowych. Po zmodyfikowaniu wejścia (jak pokazano poniżej) działało to jak urok
Dodanie do tego wątku na wypadek, gdyby inni mieli ten sam problem.
źródło
W moim przypadku jako parametr val () nie użyłem łańcucha (liczba całkowita), co nie działa, sztuczka jest tak prosta jak
źródło
Korzystanie
val()
nie działało dla mnie. Musiałem używać.attr()
wszędzie. Miałem też różne typy danych wejściowych i musiałem być dość wyraźny w przypadku pól wyboru i wybranych menu.Zaktualizuj pole tekstowe
Zaktualizuj obraz obok pliku wejściowego
Zaktualizuj wartość logiczną
Zaktualizuj wybór (z numerem lub ciągiem)
źródło
Kolejna gotcha tutaj zmarnowała trochę czasu, więc pomyślałem, że przekażę wskazówkę. Miałem ukryte pole, które podałem. i
[]
nawiasy w nazwie (ze względu na użycie z struts2), a selektor$("#model.thefield[0]")
nie znalazłby mojego ukrytego pola. Zmiana nazwy id, aby nie używać kropek i nawiasów, spowodowała, że selektor zaczął działać. Więc w końcu skończyłem z identyfikatoremmodel_the_field_0
zamiast i selektor działał dobrze.źródło
$("#model.thefield[0]")
jest interpretowane jako: element zid
równymmodel
, a cssclass
odthefield
a niektóreattribute
nazywa0
... Jeśli chcesz używać tych znaków wid
użyciu podejście zaproponowane przez Chucka Callebs w jego odpowiedzi . W HTML5id
może to być dowolny ciąg znaków, który nie jest pusty i nie zawiera żadnych spacji ( odniesienie ).Za pomocą identyfikatora:
Korzystanie z klasy:
źródło
Jeśli szukasz Haml, to jest to odpowiedź na ukryte pole, aby ustawić wartość na ukryte pole, takie jak
W jquery wystarczy przekonwertować wartość na ciąg, a następnie dołączyć ją za pomocą właściwości attr w jquery. mam nadzieję, że działa to również w innych językach.
źródło
źródło
Po prostu użyj składni poniżej get i set
DOSTAĆ
tutaj zmienna będzie przechowywać wartość pola ukrytego (selectindex)
Po stronie serwera
ZESTAW
źródło
Każdy, kto ma z tym problem, ma bardzo prosty „wbudowany” sposób, aby to zrobić za pomocą jQuery:
To ustawia wartość ukrytego pola, gdy tekst jest wpisywany do widocznego wejścia za pomocą zdarzenia onChange. Pomocne (jak w moim przypadku), gdy chcesz przekazać wartość pola do formularza „Wyszukiwanie zaawansowane” i nie zmuszać użytkownika do ponownego wpisania zapytania.
źródło