Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Вниз

IntraWeb + JavaScript   Найти похожие ветки 

 
Digitman ©   (2005-07-13 16:30) [0]

Пусть IW сгенерировал следующий html-текст :

<body>
..
<form ... name="SubmitForm" .. >

.. чего-то там ...(куча контролов)

<div id="RGRREPORTMODE" name="RGRREPORTMODE" .. OnClick="CheckReportMode(this)">
  <input type="RADIO"  CHECKED name="RGRREPORTMODE" value="0">Детально<BR>
  <input type="RADIO" name="RGRREPORTMODE" value="1">Сводно<BR>
</div>

..

</form>
..
</body>

как грамотно в теле CheckReportMode() получить объект типа RADIOBUTTON имеющий св-во Checked=True ?


 
Плохиш ©   (2005-07-13 18:02) [1]

Только проверяя свойство checked у каждого элемента

(document.SubmitForm.RGRREPORTMODE[...].checked == true)


 
DiamondShark ©   (2005-07-13 18:08) [2]


function CheckReportMode(oSender)
{
 var oButton = null;
 var oControls = oSender.all("RGRREPORTMODE");
 for (var i=0;i<oControls.length && !oControls.item(i).checked;i++);
 if (i<oControls.length) oButton = oControls.item(i);
 // здесь oButton содержит ссылку на кнопку, или null если никто не чекед
}


ЗЫ
А нафига чего-то чекать при любом клике внутри ДИВа, даже мимо кнопок?


 
Digitman ©   (2005-07-14 09:32) [3]


> Плохиш ©   (13.07.05 18:02) [1]


на первый взгляд вроде бы логично.
этот вариант и я рассматривал, но мне он показался не ахти как "грамотным" ..

хотелось бы использовать для оной цели this, переданный параметром

понимаю, что this в дан.случае - это <div>, но пока я не придумал, как лучше "разрулить" ситуацию (см. ниже)


> DiamondShark ©   (13.07.05 18:08) [2]


Видишь ли, к сожалению IW 5.0.43 для компонента TIWRadioGroup не предоставляет механизма для автогенерации нужного событийного скрипта, подобно тому как это выглядит для, например, обычных кнопок (TIWButton) в виде св-ва ScriptEvents

При рендеринге HTML-кода компонента TIWRadioGroup ИнтраВэб позволяет внедриться в этот процесс лишь в единственном для этого компонента событии OnHTMLTag, которое относится не к тэгам радиокнопок, а к <DIV>-тэгу

Обработчик этого события в наст.момент у меня выглядит так :

procedure TformMain.rgrReportModeHTMLTag(ASender: TObject; ATag: TIWHTMLTag);
begin
 ATag.AddStringParam("OnClick", "CheckReportMode(this)");
end;


При этом в результате рендеринга IWRadioButtton-контрола имеем не иначе как :

<div id="RGRREPORTMODE" name="RGRREPORTMODE" .. OnClick="CheckReportMode(this)">
 <input type="RADIO"  CHECKED name="RGRREPORTMODE" value="0">Детально<BR>
 <input type="RADIO" name="RGRREPORTMODE" value="1">Сводно<BR>
</div>

Т.е. я и рад бы сделать так

<div id="RGRREPORTMODE" name="RGRREPORTMODE" .. >
 <input type="RADIO" name="RGRREPORTMODE" .. OnClick="CheckReportMode(this)"..> ..    
 <input type="RADIO" name="RGRREPORTMODE" .. OnClick="CheckReportMode(this)"..> ..  
</div>

да вот IW мне не позволяет в дан.случае внедриться в рендеринг именно <INPUT>-тэга..

По кр.мере на сей момент я не представляю, как это сделать ..

Изначальная идея подразумевала "универсальность" скриптовой процедуры CheckReportMode(), не привязанной к конкретной именованой группе радиобатонов на форме (коих м.б. более чем одна), позволяющей обратиться к группе по переданному объектному параметру, соответствующего группе, а не по символьному идентификатору

Что в такой ситуации ты мог бы предложить передавать параметром вместо this ?


 
DiamondShark ©   (2005-07-14 11:44) [4]


> Digitman ©   (14.07.05 09:32) [3]

Ага, понял.


> Что в такой ситуации ты мог бы предложить передавать параметром
> вместо this ?

Ничего не надо. Если IW всегда генерит name контейнера равный name контролов, то внутри функции:

function CheckReportMode(oSender)
{
var oButton = null;
var oControls = oSender.all(oSender.name);
for (var i=0;i<oControls.length && !oControls.item(i).checked;i++);
if (i<oControls.length) oButton = oControls.item(i);
// здесь oButton содержит ссылку на кнопку, или null если никто не чекед
}


 
Digitman ©   (2005-07-14 12:29) [5]


> DiamondShark ©   (14.07.05 11:44) [4]


> Если IW всегда генерит name контейнера равный name контролов


да, так и есть.
судя по всему, для IW это правило, по кр.мере для группы радиокнопок

в принципе я тоже дошел до решения в виде oControls = oSender.all(oSender.name);
, но все равно - спасибо за подсказку !

Тут еще один смежный вопрос возник - от состояния того или иного радиобатона должна зависеть, например, видимость неких контролов на форме (о фреймах пока речи не идет), и есть откровенное желание управлять видимостью этих контролов прямо на кл.стороне, в событийном j-скрипте, без обращения к серверу для генерации обновленного документа...

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

Как тут можно поступить ?


 
Плохиш ©   (2005-07-14 13:19) [6]


> Digitman ©   (14.07.05 12:29) [5]
> Но насколько я себе представляю, без полной или частичной
> перезагрузки документа изменить статус видимости контрола
> вряд ли возможно - по сути контрол нужно пересоздать с новым
> атрибутом видимости ...
> Как тут можно поступить ?

Меняй свойства объектов, например

document.getElementById("vorname").style.visibility = "hidden";

или

document.getElementById("vorname").style.visibility = "visible";


 
Digitman ©   (2005-07-14 13:38) [7]


> Плохиш ©   (14.07.05 13:19) [6]


Упс !
Слона-то я и не приметил)
Вот что значит "маловато хатмельной практики" !

Спасибо, сэр !


 
Плохиш ©   (2005-07-14 14:03) [8]

Всегда, пожалуйста :-)

PS. Хотел порекомендовать http://www.selfhtml.ru , дык там очень малая часть переведена :-(


 
DiamondShark ©   (2005-07-14 15:11) [9]

А ещё в стилях можно использовать выражения.
Поддерживаются IE 5.0+



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.034 c
1-1121527656
Sania
2005-07-16 19:27
2005.08.07
обращение к другой форме


3-1119542398
Koala
2005-06-23 19:59
2005.08.07
Помогите организовать ХП (Firebird)


4-1118395724
!Trinix
2005-06-10 13:28
2005.08.07
Форма


14-1121319516
Ega23
2005-07-14 09:38
2005.08.07
С днем рождения! 14 июля


1-1121692343
Shuma
2005-07-18 17:12
2005.08.07
Плоский (Flat) PageControl и/или TabControl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский