Проблема в том, что ваш резервный скрипт-заполнитель использует значение поля для отображения заполнителя.
Поля пароля, конечно, скрывают их значение, поэтому этот метод не будет работать в полях пароля точно так, как вы описали.
Вам нужен скрипт-заполнитель, который работает, записывая текст-заполнитель в дополнительный элемент, который накладывается поверх поля (или за ним, если фон поля прозрачен). Затем скрипт может изменить этот элемент, а не изменять значение поля.
Существует целая куча доступных скриптов, которые делают именно это - этот, например (но есть и много других).
Другой вариант - динамически изменять тип поля с password
на text
и обратно при каждом переключении заполнителя. Это может быть более быстрой победой, чтобы вписаться в ваш существующий код, но я бы рекомендовал использовать другую технику вместо этого в долгосрочной перспективе.
Надеюсь, это поможет.