Wygląda na to, że domyślnie wyłączone elementy wejściowe są ignorowane przez $.serialize()
. Czy jest w pobliżu praca?
135
Wygląda na to, że domyślnie wyłączone elementy wejściowe są ignorowane przez $.serialize()
. Czy jest w pobliżu praca?
textarea
ale nie wyłączoneinput
..Odpowiedzi:
Tymczasowo je włącz.
źródło
readonly
zamiast,disabled
jak wspomniał Andrew poniżej.Użyj wejść tylko do odczytu zamiast wyłączonych wejść:
Powinno to zostać odebrane przez serialize ().
źródło
Możesz użyć funkcji proxy (wpływa na oba
$.serializeArray()
i$.serialize()
):źródło
@ user113716 podał podstawową odpowiedź. Mój wkład to tylko drobiazg z jQuery poprzez dodanie do niego funkcji:
Przykładowe użycie:
źródło
Spróbuj tego:
źródło
Widzę kilka obejść, ale nadal nikt nie zasugerował napisania własnej funkcji serializacji? Proszę bardzo: https://jsfiddle.net/Lnag9kbc/
źródło
Wyłączone elementy wejściowe nie są serializowane, ponieważ „wyłączone” oznacza, że nie powinny być używane zgodnie ze standardem W3C. jQuery po prostu przestrzega standardu, mimo że niektóre przeglądarki tego nie robią. Możesz obejść ten problem, dodając ukryte pole o wartości identycznej z wyłączonym polem lub robiąc to za pomocą jQuery, coś takiego:
Oczywiście, gdybyś miał więcej niż jedno wyłączone wejście, musiałbyś iterować po pasujących selektorach itp.
źródło
W przypadku, gdy ktoś nie chce ich aktywować, a następnie wyłącz je ponownie, możesz również spróbować to zrobić (zmodyfikowałem to z Wyłączonych pól, które nie są odbierane przez serializeArray , z używania wtyczki do używania normalnej funkcji):
Możesz więc nazwać je w ten sposób:
źródło
code
3: {name: undefined, value: ""} 4: {name: undefined, value: ""}Nieco powyżej Aarona Hudona:
Może masz coś innego niż Input (np. Select), więc zmieniłem
do
źródło