Javascript .on("изменить" работает только при изменении вручную [jsFiddle]
Я сделал jsFiddle со всеми данными и информацией о проблеме. Я думаю, что там легче понять, что происходит:
Пожалуйста, взгляните:
http://jsfiddle.net/lukinhasb/GuZq2/
$("#estado").val(unescape(resultadoCEP["uf"]));
Маска изменяется только при ручном выборе опции. Когда javascript увеличивает поле с теми же данными, он не меняет маску.
$("#estado").on("change", function() {
if ($(this).val() == 'SP') {
$("#celular_pessoa_fisica").mask("(99) 99999-9999");
} else {
$("#celular_pessoa_fisica").mask("(99) 9999-9999");
}
3 ответа
Решение
Вот как это должно работать, но вы можете инициировать событие изменения самостоятельно, когда устанавливаете значение через JS:
$("#estado").val(unescape(resultadoCEP["uf"])).trigger('change');
Вы можете инициировать изменение на входе, так что ваша функция вызывается:
$("#estado").val(unescape(resultadoCEP["uf"])).trigger("change");
Дополнительная информация:
Когда вы изменяете поле с помощью javascript, оно не будет вызывать событие изменения автоматически. С помощью jQuery вы можете инициировать изменения с помощью $elem.change()