(JavaScript) навешивание обработки собитий в <option>
От: AI Россия  
Дата: 08.07.05 09:15
Оценка:
пытаюсь сделать следующее

<select>
  <option onclick='window.alert("fdsd");'> </option>
</select>


но чего то не хочет — такое вообще возможно
?
Re: (JavaScript) навешивание обработки собитий в <option>
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 08.07.05 09:35
Оценка:
Здравствуйте, AI, Вы писали:

AI>пытаюсь сделать следующее


AI>
AI><select>
AI>  <option onclick='window.alert("fdsd");'> </option>
AI></select>

AI>


AI>но чего то не хочет — такое вообще возможно

AI>?
может так:

<script>
function onclck() {
   if (getElemetById('s1').value == "1") {
   // ^^^ в этой строчке до конца не уверен
     window.alert('alert!');
   }
}
</script>
<select id="s1" onclick="onclck();">
<option value="1">1</option>
</select>
Re[2]: (JavaScript) навешивание обработки собитий в <option
От: AI Россия  
Дата: 08.07.05 09:39
Оценка:
Здравствуйте, Бабошин Андрей, Вы писали:

БА>Здравствуйте, AI, Вы писали:


AI>>пытаюсь сделать следующее


AI>>
AI>><select>
AI>>  <option onclick='window.alert("fdsd");'> </option>
AI>></select>

AI>>


AI>>но чего то не хочет — такое вообще возможно

AI>>?
БА>может так:

БА>
БА><script>
БА>function onclck() {
БА>   if (getElemetById('s1').value == "1") {
БА>   // ^^^ в этой строчке до конца не уверен
БА>     window.alert('alert!');
БА>   }
БА>}
БА></script>
БА><select id="s1" onclick="onclck();">
БА><option value="1">1</option>
БА></select>
БА>



нет мне надо как то попытаться навешать событие именно в option так как там цикл котрый рисует оption и формируеться некоторая строчка которую я должен потом выводить в див при выборе какой нить опции
Re[3]: (JavaScript) навешивание обработки собитий в <option
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 08.07.05 09:48
Оценка: +1
Здравствуйте, AI, Вы писали:

БА>><script>
БА>>function onclck() {
БА>>   if (getElemetById('s1').value == "1") {
БА>>   // ^^^ в этой строчке до конца не уверен
БА>>     window.alert('alert!');
БА>>   }
БА>>}
БА>></script>
БА>><select id="s1" onclick="onclck();">
БА>><option value="1">1</option>
БА>></select>
БА>>



AI>нет мне надо как то попытаться навешать событие именно в option так как там цикл котрый рисует оption и формируеться некоторая строчка которую я должен потом выводить в див при выборе какой нить опции


а что Вам мешает навесить онклик на select и в оброботчике проверять какое значение выбрано?
Re: (JavaScript) навешивание обработки собитий в <option>
От: geck  
Дата: 08.07.05 09:49
Оценка:
Здравствуйте, AI, Вы писали:

AI>пытаюсь сделать следующее


AI>
AI><select>
AI>  <option onclick='window.alert("fdsd");'> </option>
AI></select>

AI>


AI>но чего то не хочет — такое вообще возможно

AI>?

<select onChange="alert(this.value);">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>


Re[4]: (JavaScript) навешивание обработки собитий в <option
От: AI Россия  
Дата: 08.07.05 09:56
Оценка:
Здравствуйте, Бабошин Андрей, Вы писали:

БА>Здравствуйте, AI, Вы писали:


БА>
БА>>><script>
БА>>>function onclck() {
БА>>>   if (getElemetById('s1').value == "1") {
БА>>>   // ^^^ в этой строчке до конца не уверен
БА>>>     window.alert('alert!');
БА>>>   }
БА>>>}
БА>>></script>
БА>>><select id="s1" onclick="onclck();">
БА>>><option value="1">1</option>
БА>>></select>
БА>>>



AI>>нет мне надо как то попытаться навешать событие именно в option так как там цикл котрый рисует оption и формируеться некоторая строчка которую я должен потом выводить в див при выборе какой нить опции


БА>а что Вам мешает навесить онклик на select и в оброботчике проверять какое значение выбрано?


объясняю.

у меня есь три одновременно источника данных при селекте.
1. когда у меня в самом value для otion храниться некоторый id который берёться из некой базы и явялеться ключом
2.. <option value='1'>Цена</option> -> то есть отображатьеся цена
3. тут же существует более детальное описание об том как формируеться эта цена и за что — то есть ДеталЦена .. вот и когда я там выбираю в что то надо в див проталкивать это детально описание
Re[5]: (JavaScript) навешивание обработки собитий в <option
От: frёёm Россия  
Дата: 08.07.05 10:18
Оценка:
По моему нельзя повесить листенер на option если только может ie поддержит и то не уверен.
Я не вижу причин которые мешают повесить листенер на селект.

Вешаешь на onClick select'а, где сверяешь если
select.options[select.selectedIndex].id совпадает с предыдушим то ничё не проиходит
если не совпадает значит юзерь ткнул в данный (select.options[selectIndex]) option. вот и всё...что мешает ?
Ни что в жизни ни даёться так просто как... хотелось бы...
Re[6]: (JavaScript) навешивание обработки собитий в <option
От: AI Россия  
Дата: 08.07.05 10:47
Оценка:
Здравствуйте, frёёm, Вы писали:

ёё>По моему нельзя повесить листенер на option если только может ie поддержит и то не уверен.

ёё>Я не вижу причин которые мешают повесить листенер на селект.

ёё>Вешаешь на onClick select'а, где сверяешь если

ёё>select.options[select.selectedIndex].id совпадает с предыдушим то ничё не проиходит
ёё>если не совпадает значит юзерь ткнул в данный (select.options[selectIndex]) option. вот и всё...что мешает ?

мешает то что надо ломать шаблон ..

вот что у меня — неохота пистаь долго просто кину код


{literal}
    <script language="javascript">
    function f(id, str) {
        document.getElementById(id).innerText = str;
    }
    </script>
{/literal}

<select  onmouseout="f('exa{$plan.Description.PlanID}','text');"  name="PeriodPlanID[{$plan.Description.PlanID}][{$addvalue}]" id="PeriodPlanID{$plan.Description.PlanID}"  onClick="SetParentPlanPeriodID(this, 'ParentPlanPeriodID'); AutoSelectPlan('Plan{$plan.Description.PlanID}');"  {if $disabled} disabled {/if} >
{foreach name=outerPeriod item=period from=$plan.Period}
 {assign var=priceSetupFee value=$period.SetupFee|string_format:"%.2f"}
 {assign var=priceSubscriptionFee value=$period.SubscriptionFee|string_format:"%.2f"}
 
    {capture name=funcGetTotalAmount}
         {GetTotalAmount 
                                     RecurringType=$plan.Description.RecurringType 
                                     SetupFee=$period.SetupFee 
                                     SubscriptionFee=$period.SubscriptionFee 
                                     BillingPeriod=$plan.Description.BillingPeriod
         }
     {/capture}

    {capture name=funcGetTotalAmountDescription}
         {GetTotalAmountDescription 
                                     RecurringType=$plan.Description.RecurringType 
                                     SetupFee=$period.SetupFee 
                                     SubscriptionFee=$period.SubscriptionFee 
                                     BillingPeriod=$plan.Description.BillingPeriod
                                     BillingPeriodType=$plan.Description.BillingPeriodType
         }
     {/capture}     
     
     
     <option onChange="f('exa{$plan.Description.PlanID}','textmove');" value='{$period.PeriodID}' {if $default eq $period.PeriodID}selected{/if}>From ${$smarty.capture.funcGetTotalAmount|string_format:"%.2f"}</option> 
  
{/foreach}
</select>
                                                              
<div id="exa{$plan.Description.PlanID}">
</div>
Re[7]: (JavaScript) навешивание обработки собитий в <option
От: AI Россия  
Дата: 08.07.05 11:24
Оценка:
короче выкрутился так всё таки функию обработки собития навешал на селект но у какждой jption есть свойство label в него и ждописываю детальнйю инфу


     <option label="{$smarty.capture.funcGetTotalAmountDescription}" value='{$period.PeriodID}' {if $default eq $period.PeriodID}selected{/if}>From ${$smarty.capture.funcGetTotalAmount|string_format:"%.2f"}</option> 

....
    function f(idselect, id, str) {
        var str;
        var obj = document.getElementById(id);
        var index = idselect.selectedIndex;
        str = idselect.options[index].label;
        
        document.getElementById(id).innerText = str;
    }
Re: (JavaScript) навешивание обработки собитий в <option>
От: DSD Россия http://911.ru/cv
Дата: 10.07.05 08:57
Оценка: 5 (2)
Здравствуйте, AI, Вы писали:

AI>пытаюсь сделать следующее


AI>
AI><select>
AI>  <option onclick='window.alert("fdsd");'> </option>
AI></select>

AI>


AI>но чего то не хочет — такое вообще возможно

AI>?

У <option> нет события onclick, но что нам, извращенцам, может помешать на этом свете, верно?

<select onchange="var opt = this[this.selectedIndex]; if (opt['onclick']) opt.onclick();">
  <option onclick='window.alert("clicked 1");'> 1 </option>
  <option> 2 </option>
  <option onclick='window.alert("clicked 3");'> 3 </option>
  <option onclick='window.alert("clicked 4");'> 4 </option>
</select>


Собранный пример: http://www.rsdn.ru/File/6272/opt_click.html
--
DSD
Re[2]: (JavaScript) навешивание обработки собитий в <option
От: devic Fast Version Control System
Дата: 10.07.05 12:51
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>У <option> нет события onclick, но что нам, извращенцам, может помешать на этом свете, верно?


тоже самое, только без извращения

<select onchange="if(this.value!=''){alert('clicked '+this.value);}">
  <option value=1> 1 </option>
  <option > 2 </option>
  <option  value=3> 3 </option>
  <option  value=4> 4 </option>
</select>
Re[3]: (JavaScript) навешивание обработки собитий в <option
От: devic Fast Version Control System
Дата: 10.07.05 13:02
Оценка:
D>тоже самое, только без извращения

опа, что то я зациклился на алерте, у DSD то фунция вызывается
ну тогда мой вариант:

<select onchange="if(this.value!=''){eval(this.value);}">
  <option value="alert('kuku')"> 1 </option>
  <option > 2 </option>
  <option value="prompt('kuku')"> 3 </option>
  <option value="confirm('kuku')"> 4 </option>
</select>
Re[4]: (JavaScript) навешивание обработки собитий в <option
От: DSD Россия http://911.ru/cv
Дата: 10.07.05 13:20
Оценка:
Здравствуйте, devic, Вы писали:

D>>тоже самое, только без извращения


D>опа, что то я зациклился на алерте, у DSD то фунция вызывается

D>ну тогда мой вариант:

D>
D><select onchange="if(this.value!=''){eval(this.value);}">
D>  <option value="alert('kuku')"> 1 </option>
D>  <option > 2 </option>
D>  <option value="prompt('kuku')"> 3 </option>
D>  <option value="confirm('kuku')"> 4 </option>
D></select>
D>


теперь что-то ты зациклился на value
поздняк метаться, один хрен мой вариант больше соответствует требованиям исходного условия.
да и вообще, все что после — плагиат
--
DSD
Re[5]: (JavaScript) навешивание обработки собитий в <option
От: devic Fast Version Control System
Дата: 10.07.05 13:22
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>поздняк метаться, один хрен мой вариант больше соответствует требованиям исходного условия.

DSD>да и вообще, все что после — плагиат

а вот и нет
забыл сказать, что мой пример корректно работает кроме ИЕ также в фраерфоксе, нетшкафе и опере

http://www.sembel.net/expexc/js/forms/option_onclick.html

а я эксперт из experts-exchange.com
рад с тобой познакомится DSD.
Re[6]: (JavaScript) навешивание обработки собитий в <option
От: DSD Россия http://911.ru/cv
Дата: 10.07.05 13:56
Оценка:
Здравствуйте, devic, Вы писали:

D>а вот и нет

D>забыл сказать, что мой пример корректно работает кроме ИЕ также в фраерфоксе, нетшкафе и опере
Дело ведь не в этом. отладить под все браузеры и у меня можно, изначально я такой задачи себе не ставлю.
был вопрос — я дал решение, которое звучит в сущности так: "если нет onclick — мы его сделаем себе сами". адаптация под конкретный случай — не моя забота.
тем более, что value может быть задействовано для отсылки его формой, которая в себе содержит данный <select>, и поэтому его(value) в решении трогать нельзя, коль такого не было указано в условии задачи.


D>http://www.sembel.net/expexc/js/forms/option_onclick.html

D>а я эксперт из experts-exchange.com
D>рад с тобой познакомится DSD.
ну привет


P.S. кстати, в нетскейпе 4.7 все равно работать не будет
--
DSD
Re[7]: (JavaScript) навешивание обработки собитий в <option
От: devic Fast Version Control System
Дата: 10.07.05 14:11
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>конкретный случай — не моя забота.

ок

DSD>тем более, что value

ок я поменял на id, тоже не проблема

DSD>P.S. кстати, в нетскейпе 4.7 все равно работать не будет

а вот он... уже давно не браузер
Re[8]: (JavaScript) навешивание обработки собитий в <option
От: DSD Россия http://911.ru/cv
Дата: 10.07.05 14:19
Оценка: :)
Здравствуйте, devic, Вы писали:

DSD>>тем более, что value

D>ок я поменял на id, тоже не проблема

хм... ну это все понятно, не подойдет id(хотя пихать в ID тело функции... шифт ногой нажимать — оригинально... нда...), поменяешь на width и т.д.
а вот позвольте мне, как психиатру, предложить записывать тело функции в "незарезервированные" свойства, например в my_click_function, whenclick, age, suck и т.п. почему так не сделать?
или главный вопрос — почему собственно не onclick в конце концов? вы так старательно избегаете использования onclick? уж не фобия ли?


но, шутки шутками, а серьезно — почему от onclick упорно отказываешься?
--
DSD
Re[9]: (JavaScript) навешивание обработки собитий в <option
От: devic Fast Version Control System
Дата: 10.07.05 14:28
Оценка: :)
Здравствуйте, DSD, Вы писали:

DSD>но, шутки шутками, а серьезно — почему от onclick упорно отказываешься?


потому что онклик если читать, то возращается:

function anonymous()
{
alert('kuku')
}


а это мне не подходит для eval


ну ладно тогда так:
<select onchange="var f=this.options[this.selectedIndex].getAttribute('o');if(f!='')eval(f);">
  <option o="alert('kuku')"> 1 </option>
  <option > 2 </option>
  <option o="prompt('kuku')"> 3 </option>
  <option o="confirm('kuku')"> 4 </option>
</select>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.