Probablemente encontrará que está configurando la fecha para el 31 de febrero de 2009 (si es hoy el 31 de enero) y Javascript automágicamente lo hace a principios de marzo.
Compruebe el día del mes, esperaría que fuera de 1, 2 o 3. Si no es lo mismo que antes de agregar un mes, retroceda un día hasta que el mes cambie nuevamente.
De esta manera, el día "último día de enero" se convierte en "último día de febrero".
EDIT:
Ronald, basado en sus comentarios a otras respuestas, es posible que desee alejarse del comportamiento de borde caso como "lo que sucede cuando trato de hacer febrero 30" o "¿Qué pasa cuando intente hacer 2009/13/07 (aaaa/mm/dd) "(este último aún podría ser un problema incluso para mi solución, por lo que debería probarlo).
En lugar de eso, explícitamente codifico las posibilidades. Ya que no se preocupan por el día del mes (lo que desea el año y el mes que es correcta para el próximo mes), algo como esto debería ser suficiente:
var now = new Date();
if (now.getMonth() == 11) {
var current = new Date(now.getFullYear() + 1, 0, 1);
} else {
var current = new Date(now.getFullYear(), now.getMonth() + 1, 1);
}
Eso le da Ene 1, el año siguiente para cualquier día de diciembre y el primer día del mes siguiente para cualquier otro día. Más código, lo sé, pero hace tiempo que me cansé de codificar los trucos de eficiencia, prefiriendo la legibilidad a menos que haya un claro requerimiento para hacer lo contrario.
ayer fue 1 de febrero ... – nickf
divertido, la cuestión era pedido el 1 de febrero a las 00:03, por el Cuando terminó su pregunta, ya estaba "fechada": P –