Обработка события SELECT
Прошу помощи с данным кодом. На форме выбирается тип оплаты, если выбранна безналичка отображается то что в div, во всех остальных случаях скрыта.
<script type="text/javascript"> function SelectPayType(){ if (this.options.[this.selectedIndex].value == "3" ){ document.getElementById('rek').style.display = 'block'} else {document.getElementById('rek').style.display = 'none'} } </script> ... ... ... <select name="paymenttype" size="1" maxlength="32" style="width:336px;" onChange="SelectPayType()"> <option value="1" >наличный расчет</option> <option value="2" >кредитная карта</option> <option value="3" >безналичный расчет</option> </select> <div id="rek" style="display: none"> ИНН: <input type="text"><BR> КПП: <input type="text"><BR> Организация: <input type="text"><BR> Юредический адрес: <input type="text"><BR> Фактический адрес: <input type="text"><BR> </div> |
Вы просите готовый скрипт с нуля.
Это работа, и за нее обычно платят деньги. Для таких сообщений предназначен раздел форума "Работа". Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела. |
this.options.[this.selectedIndex].value- Что-то подозрительное |
Да ну, что вы, готовый скрипт мне вовсе не нужен, просто интересует как как правильно обратиться к SELECT через this что бы получить текущее его значение.
|
this.options - Массив. Зачем Вы точку там ставите?
this.options[this.selectedIndex].value - попробуйте так)) |
Замени
<select name="paymenttype" size="1" maxlength="32" style="width:336px;" onChange="SelectPayType()"> на <select name="paymenttype" size="1" maxlength="32" style="width:336px;" onChange="SelectPayType.call(this)"> ещё if (this.options.[this.selectedIndex].value == "3" ) на if (this.options[this.selectedIndex].value == "3" ) Самый быстрый вариант, а вообще это быдлокод. |
Цитата:
|
Kolyaj,Простите.. коллекция.
B~Vladi, Код практически полностью тырен с готовых образцов в инете. |
Может я затру тогда свой пост?!:-?
|
B~Vladi, а что за вызов функции через call чем отличается при вызове без нее.
<select name="paymenttype" size="1" maxlength="32" style="width:336px;" onChange="SelectPayType.call(this)"> Как раз после подобной записи код заработал. Огромное человеческое спасибо, а то третий день бился с этой частью кода. |
Данный код выдернут с CMS'ки
|
Метод call вызывает функцию в контексте объекта, переданного первым аргументом. Подробнее читай в мануалах.
Раньше у тебя в функции this указывал на window, а теперь на DOM-элемент select. |
Теперь все ясно стало, ну а маны обязательно по теме прочитаю... еще бы найти толковые :)
По путно созрел вопрос. Как можно подобный код записать что бы в выпадающем списке не было пункта "0" <select name="paymenttype" size="1" maxlength="32" style="width:336px;" onChange="SelectChange.call(this)"> <option value="О" Disabled selected >Выберете вариант</option> <option value="1" >наличный расчет</option> <option value="2" >кредитная карта</option> <option value="3" >безналичный расчет</option> </select> |
|
:) Вариант... а как надпись сохранить "Выберете вариант" в селекте пока ни чего не выбранно в таком случае
|
Вернуть его назад. Ты определись что тебе надо.
|
Мне нужна надпись с пояснениями в селекте ну что бы самой надписи невыло в вариантах выбора селекта. На подобее
<option value="0" Disabled selected >Выберете вариант</option>но что бы она в выпадающем списке не отображалась |
Цитата:
if(this.value == "3") а вот это Цитата:
<option Disabled selected >Выберете вариант</option>value option'а при выборе присваивается select'у. Главное - option'ам name не давать. |
MikhailGirshberg, мне тоже так больше нравится :) минимизация кода это хорошо ...если без ущерба
Цитата:
|
Capricorn,
А что это за цмс-ка? |
Цитата:
|
Цитата:
|
Цитата:
var opt_z = this.getElementsByTagName('OPTION')[0] if(opt_z.disabled) opt_z.parentNode.removeChild(opt_z) |
MikhailGirshberg, тогда уж на событие onClick если динамически удолять его, если я правильно понял ход мысли... Я думал что то проще есть, типа
<SELECT label="Выберите вариант"... ...> :) |
onClickпроще для понимания. Не помню, почему не понравилось его использовать - кажется, кроссбраузерные грабли были.
label как идея мне тоже когда-то нравился. Почему-то так и не применился нигде. То ли те же грабли, то ли он только в fieldset применяется - не помню. |
Пока сделаю так
Цитата:
|
Цитата:
|
Sweet,
да я-то чего, это к Розенталю да к вашим учителям по русскому языку. Цитата:
|
Хмм.. Интересно (гораздо интереснее основной темы:) ). Надо будет повникать.. Спасибо за инфу:thanks:
|
Раздулся простенький вопрос на три страницы)))
|
Это форум или площадка для фрилансеров
Цитата:
Ваше место не на донном форуме а именно на фрилансе, только лишь занимаете драгоценные байты памяти в базе, давая бессмысленные ответы на вопросы! |
Часовой пояс GMT +3, время: 14:33. |