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