Mam dane wejściowe HTML z linkiem w wartości.
<input type = 'text' value = 'http://www.link.com' id = 'link' />
Używam jQuery, aby zmienić wartość określonego zdarzenia.
$('#link').val('new value');
Powyższy kod zmienia wartość pola tekstowego, ale nie zmienia wartości w kodzie (wartość = 'http://www.link.com' pozostaje niezmieniona). Potrzebuję również zmiany wartości = ''.
javascript
jquery
Lukas
źródło
źródło
in the code
? Czy patrzysz na oryginalne (a więc niezmodyfikowane) źródło strony?Odpowiedzi:
Użyj
attr
zamiast tego.$('#link').attr('value', 'new value');
próbny
źródło
setAttribute
lub jQuery wpłynieszattr
również na wartość elementu DOM: jsfiddle.net/a8SxF/1.html()
, nadal będzie ta sama stara wartość, nie ma znaczenia, jeśli użyjesz.val('new value')
lubattr('value', 'new value')
... :(Zmiana właściwości value nie zmienia pliku
defaultValue
. W kodzie (pobranym za pomocą.html()
lubinnerHTML
) atrybut value będzie zawierał właściwośćdefaultValue
, a nie wartość.źródło
aby nieco rozwinąć odpowiedź Ricardo: https://stackoverflow.com/a/11873775/7672426
http://api.jquery.com/val/#val2
o val ()
źródło
To tylko możliwy scenariusz, który mi się przydarzył. Cóż, jeśli komuś to pomoże, to świetnie: napisałem skomplikowaną aplikację, w której gdzieś w kodzie użyłem funkcji, aby wyczyścić wszystkie wartości pól tekstowych przed ich wyświetleniem. Jakiś czas później próbowałem ustawić wartość pola tekstowego za pomocą jquery val („wartość”), ale nie zauważyłem, że zaraz po tym wywołałem metodę ClearAllInputs… więc to też może się zdarzyć.
źródło
Mój podobny problem był spowodowany posiadaniem znaków specjalnych (np. Kropek) w selektorze.
Rozwiązaniem było uniknięcie znaków specjalnych:
źródło
źródło
źródło
U mnie problem polegał na tym, że zmiana wartości tego pola nie zadziałała:
Żadne z powyższych rozwiązań nie zadziałało, więc zbadałem dalej i znalazłem:
Zgodnie ze specyfikacją zdarzenia DOM Level 2: Zdarzenie change występuje, gdy formant traci fokus wejściowy, a jego wartość została zmodyfikowana od czasu uzyskania fokusu. Oznacza to, że zdarzenie zmiany jest zaprojektowane tak, aby wywoływać zmianę w wyniku interakcji użytkownika. Zmiany programowe nie powodują uruchomienia tego zdarzenia.
Rozwiązaniem było dodanie funkcji wyzwalacza i spowodowanie wywołania zdarzenia zmiany w następujący sposób:
źródło
Sprawdź dwukrotnie więcej niż jeden element z nieunikalnym identyfikatorem! To była moja sytuacja z pętlą foreach i powielaniem moich identyfikatorów.
źródło