Дело вот в чём. На сайте имеется несколько форм, в каждой есть повторяющиеся блоки input (с телефоном, именем) с одинаковыми атрибутами name (у имени - name, у телефона - phone), когда я вношу изменения в одно из полей, с помощью jquery, изменения происходят со всеми полями с тем же атрибутом name. Часть форм у меня во всплывающих окнах (display:none). При первом изменении всё проходит успешно, а вот при дальнейших начинается "магия": при очищении значения value одного из полей формы, в некоторых других формах это же поле остаётся неизменным, хотя панель разработчика показывает, что значение value пусто, а вот форма в окне браузера со мной не соглашается. Также бывает и наоборот: в окне браузера отображается значение placeholder-а, в то время как панель разработчика показывает что значение value не пустует! Уже не первый день ломаю над этим голову, но пока впустую, может кто подскажет в чём проблема?
Код:
$(document).on('focusout', 'input', function(){
var name = $(this).val();
$("input[name=name]").attr({"value":name});
});
Правильно зачем скидывать url на свой код. Вангую, что на странице дублируются элементы или неправильно написаны алгоритмы. Магии в JavaScript не бывает, скорей всего дело в его неумелом использовании.
Спасибо! "Магией" я хотел обрисовать своё непонимание происходящего процесса, знаю что где то ошибся, а вот где понять не могу, вроде должно работать, а нет!
Caprikanec, вообще, "подобные сообщества" хотя и существуют для того, чтобы задавать вопросы, когда что-то работает неправильно, но они никогда не были и не будут задуманы, как первый и единственный источник знаний, к которому осваивающий какую-то технологию прибегает в режиме "получил ошибку - сразу ничего не понял - задал вопрос - жду решения от других".
Первым шагом должен быть анализ проблемы, а не вопрос к окружающим. В данном случае - попытка понять, что именно делает ваш код.
Так все input с одинаковым name будут принимать значение измененного:
$(document).on('focusout', 'input', function(){
var name = $(this).attr('name');
var value = $(this).val();
$('input[name=' + name + ']').val(value);
});
Вы не смотрите в инспекторе на атрибут value, используйте его только для установки начального значения при генерации страницы.
Для изменения используйте .val() для изменения значения у текстового поля и .prop() для чекбоксов.
Если у вас несколько одинаковых полей перебирайте их с помощью .each() и для каждого вызывайте val
Прочитайте тут api.jquery.com/prop пункт Attributes vs. Properties там есть строка The same is true for other dynamic attributes, such as selected and value.