You’re using get_field_id()
for the name attribute of the form elements, but you should use get_field_name()
.
The field names are of the form widget-{$id_base}[{$number}][{$field_name}]
, but id’s can’t use []
, so they are like widget-{$id_base}-{$number}-{$field_name}
.