October 31st, 2009
есть объект (новость, пользователь, продукт), с которым, с помощью стандартного выпадающего меню (<SELECT>), необходимо совершать произвольные действия.
максимально оптимальное решение:
<SELECT onChange="eval(this.options[this.selecte dIndex].value); this.selectedIndex = 0; return false;">
<OPTION VALUE="">действие</OPTION>
<OPTION VALUE="location.href = 'edituser.php?ids[]=<?=htmlspecialchars(s tripslashes($user["id"]))?>';">редактиро вать</OPTION>
<OPTION VALUE="if (confirm('Удалить пользователя?')) location.href = 'engine.php?mode=deleteusers&ids[]=<?=htmlspecialchars(stripslashes($u ser["id"]))?>';">удалить</OPTION>
</SELECT>
как видно, в атрибут VALUE тега OPTION можно вставлять совершенно любой JS-код (при необходимости - смешанный с PHP-кодом) - очень удобно
SELECT не назван специально (так данный control можно размещать внутри любой формы другого назначения - никакого влияния на данные родительской формы не будет); по умолчанию активен первый OPTION и на нем onChange никогда не происходит - благодаря "this.selectedIndex = 0;"
максимально оптимальное решение:
<SELECT onChange="eval(this.options[this.selecte
<OPTION VALUE="">действие</OPTION>
<OPTION VALUE="location.href = 'edituser.php?ids[]=<?=htmlspecialchars(s
<OPTION VALUE="if (confirm('Удалить пользователя?')) location.href = 'engine.php?mode=deleteusers&ids[]=<?=htmlspecialchars(stripslashes($u
</SELECT>
как видно, в атрибут VALUE тега OPTION можно вставлять совершенно любой JS-код (при необходимости - смешанный с PHP-кодом) - очень удобно
SELECT не назван специально (так данный control можно размещать внутри любой формы другого назначения - никакого влияния на данные родительской формы не будет); по умолчанию активен первый OPTION и на нем onChange никогда не происходит - благодаря "this.selectedIndex = 0;"
