• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Из select в input и обратно
Из select в input и обратно
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 1 | 12:00:24
На странице редактирования профиля есть такая переменная $ICQ_FL$ в шаблоне она выводит input, выглядит он так

Код
<input id="siF2" class="manFlaICQ" type="text" maxlength="15" value="" style="width:100%;" size="20" name="icq"></input>


В это поле типа нужно ICQ вписывать, но я его использую для других целей.

И так, ниже я прописал такой селект

Код
<select id="siF2_2" onchange='bgfixed();' onkeydown='bgfixed();' onkeyup='bgfixed();' size="1">
<option value="1000000">Не фиксировать</option>
<option value="2000000">Фиксировать</option>
</select>


И такой вот скрипт

Код
<script language="JavaScript">  
function bgfixed(){document.getElementById('siF2')
.value = document.getElementById('siF2_2')     
.value; return !1;}
</script>


Что получается, теперь то что я выбираю в селекте, переносится в input.
Всё хорошо. НО

Допустим, пользователь выбрал нужное значение в селекте, оно вставилось в инпут и он сохранил изменения.
Через время он решил значение поменять, заходи на страницу где стоят эти
поля и видит, что в инпуте одно значение (которое он выбирал) а вот
селект всегда по умолчанию показывает

Код
<option value="1000000">Не фиксировать</option>


Нужно дописать скрипт, что бы данные из инпута возвращались в селект. Вот)
Вроде понятно всё описал, выручайте парни)

fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 2 | 12:34:00
Код
<input id="siF2" class="manFlaICQ" type="text" maxlength="15" value="" style="width:100%;" size="20" name="icq"></input>
<select id="siF2_2" onchange='bgfixed(true);' size="1">
<option value="1000000">Не фиксировать</option>
<option value="2000000">Фиксировать</option>
</select>

Код
<script type="text/javascript">
function bgfixed(is){
if(!document.getElementById('siF2'))return;
if(is){
  document.getElementById('siF2').value = document.getElementById('siF2_2').value;
}else{
  document.getElementById('siF2_2').value = document.getElementById('siF2').value;
}};bgfixed();
</script>

Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 3 | 13:40:03
fflesh, да, теперь оно возвращает данные из инпута в селект.
Но, когда я хочу снова изменить данные, жму на селект и выбираю другую опцию, то во-первых она не выбирается в самом селекте (остаётся старая), во-вторых новые данные не отправляются в инпут.

Поправишь? shy

fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 4 | 14:51:12
Цитата (Rad_van_Cor)
fflesh, да, теперь оно возвращает данные из инпута в селект.
Но, когда я хочу снова изменить данные, жму на селект и выбираю другую опцию, то во-первых она не выбирается в самом селекте (остаётся старая), во-вторых новые данные не отправляются в инпут.

Ты точно скопировал верно?
<select id="siF2_2" onchange='bgfixed(true);' size="1">

Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 5 | 15:42:45
fflesh, ой я дебил... А я скрипт скопировал поставил и всё. А в HTML onkeydown='bgfixed();' onkeyup='bgfixed();' убрал, а что к onchange ты добавил true не заметил.
Да, теперь работает как нужно))

И дальше по этой же теме.

Смотри, к примеру я использую два поля в настройках.

В одно мы вставляем ссылку на картинку (эта картинка потом будет фоном на персональной странице у пользователя)
В другое вписываем цвет формата "#000000" это будет цвет фона.
Ну и на персональной странице уже условием и переменными вывожу всё это дело куда нужно.

Но я сейчас делаю фишку, что бы когда человек заходил в настройки, и менял значение полей, цвет, ссылку на картинку и другое, что бы изменения сразу вступали в силу, что бы можно было сразу посмотреть как оно будет выглядеть.

В общем что я делаю, на странице редактирования профиля стоит это

Код
<body style="position:center; background:url(/diz/bg.png) 50% 0px #ededed repeat fixed">

А ниже такой скрипт

Код
$('body').attr('style','position:center; background:url('+$('#siF1').val()+') 50% 0px '+$('#siF3').val()+' '+$('#siF8').val()+' '+$('#siF7').val()+';');

При загрузки страницы с настройками, скрипт сразу вставляет фоновую картинку, цвет, указывает размножать картинку или нет и фиксировать её или нет.
Все эти данные скрипт берёт из полей в которых всё это указано.

Затем стоит такой скрипт:
Код
$('#siF1').keyup(function(){$('body').css('background','url('+$('#siF1').val()+') 50% 0px  '+$('#siF3').val()+' '+$('#siF8').val()+' '+$('#siF7').val()+' ');};)
$('#siF3').keyup(function(){$('body').css('background','url('+$('#siF1').val()+') 50% 0px '+$('#siF3').val()+' '+$('#siF8').val()+' '+$('#siF7').val()+' ');};)
$('#siF7').keyup(function(){$('body').css('background','url('+$('#siF1').val()+') 50% 0px '+$('#siF3').val()+' '+$('#siF8').val()+' '+$('#siF7').val()+' ');};)
$('#siF8').keyup(function(){$('body').css('background','url('+$('#siF1').val()+') 50% 0px '+$('#siF3').val()+' '+$('#siF8').val()+' '+$('#siF7').val()+' ');};)

Что он делает, если человек вдруг решил поменять фоновую картинку, которая вставляется в поле с ID siF1 то скрипт сразу её обновит, и человек её увидит. Так же само и с цветом.

Но вот с repeat и fixed проблемы.

Cкрипт не обновляет данные из полей siF7 (fixed/scroll) и siF8 (repet/no-repet) по двум причинам.
1) keyup передаётся только если в ручную изменит в инпуте значение, а мы помним что визуально он вообще как бы скрыт, и значение вставляется в него из селекта.

2) после вставки скрипта который выводит данные из селекта в инпут и обратно, keyup не передаёт данные если даже в ручную их менять.

Короче получилась куча скриптов и они друг друга забивают.

Подскажи пожалуйста как решить проблему.
Для наглядности скрин, что бы понятней было, а то я тут понаписал столько.



В общем если я не понятно объяснил, поробую по конкретние

Нужно что бы эта часть скрипта

Код
$('#siF7').keyup(function(){$('body').css('background','url('+$('#siF1').val()+') 50% 0px '+$('#siF3').val()+' '+$('#siF8').val()+' '+$('#siF7').val()+'  
');};)
$('#siF8').keyup(function(){$('body').css('background','url('+$('#siF1').val()+') 50% 0px '+$('#siF3').val()+' '+$('#siF8').val()+' '+$('#siF7').val()+'  
');};)


Работала. Когда я меняю в селекте значение, оно автоматически вставляется в инпут, а из инпута должно вставлятся в body что бы изменения сразу, так сказать, вступали в силу.
Прикрепления: 0397597.jpg (127.6 Kb)

Сообщение отредактировал Rad_van_Cor - Среда, 08 Май 2013, 15:50:32
Вансан
Сообщений: 77
Репутация: 33

Сообщение # 6 | 16:04:10
Rad_van_Cor, fflesh, зачем так сложно?
Всё, что вам нужно это:
Код
<div style="display:none;">$ICQ_FL$</div>
<select id="siF2_2" size="1" name="icq">
   <option value="1000000">Не фиксировать</option>
   <option value="2000000">Фиксировать</option>
</select>
<script type="text/javascript">$('#siF2_2 option[value="'+$('#siF2').parent().remove().end().val()+'"]').attr('selected','selected');</script>

Добавлено (08 Май 2013, 16:01:50)
---------------------------------------------
Rad_van_Cor, используйте change() вместо keyup().
И вообще желательно переписать этот код. Сейчас посмотрю подробнее...

Добавлено (08 Май 2013, 16:04:10)
---------------------------------------------
Rad_van_Cor, а можете прислать полный код со всеми селектами и прочим? Чтобы можно было его в живую протестировать.


Absit invidia verbo
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 7 | 16:11:14
Вансан, я вам могу даже дать пароль и логин пользователя на сайт, на котором я всё это дело тестирую.

Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Из select в input и обратно
  • Страница 1 из 1
  • 1
Поиск: