Я просмотрел документы jQuery и думаю, что мы можем сделать это в одной строке, используя селекторы:
$("#myForm :input[value!='']").serialize() // does the job!
Очевидно, что #myForm получает элемент с идентификатором "myForm", но поначалу мне было менее очевидно, что символ пробела необходим между #myForm и :input, поскольку это потомок.
:input соответствует всем элементам input, textarea, select и button.
[value!=''] — это фильтр, не равный атрибуту. Странная (и полезная) вещь заключается в том, что все типы элементов :input имеют атрибуты значений, даже выборки, флажки и т. д.
Наконец, чтобы также удалить входы, где значение было '.' (как указано в вопросе):
$("#myForm :input[value!=''][value!='.']").serialize()
В этом случае сопоставление, то есть размещение двух селекторов атрибутов рядом друг с другом, подразумевает И. Запятая подразумевает ИЛИ. Извините, если это очевидно для людей, занимающихся CSS!
person
Tom Viner
schedule
04.03.2009