more rigorous forms js, but still can't find the bug