У меня есть страница с раскрывающимся списком, определенным следующим образом
$memb=$this->api->db->dsql()->table('vscrum_member m')
->field('m.id')
->field('m.name')
->where('m.team_id',$p->api->auth->get('team_id'))
->order('m.xlastname, m.xfirstname')
->do_getAssoc();
$f=$p->add('Form');
$l1=$f->addField('dropdown','member')->setValueList($memb);
Мне нужно, чтобы страница перезагружалась, передавая текущее значение раскрывающегося списка, когда оно изменяется пользователем (либо GET, либо POST в порядке).
В ATK4 я могу вызвать перенаправление страницы с этим
$l1->js('change')->univ()->redirect($this->api->getDestinationURL(null));
и теоретически вы можете добавить массив значений в качестве второго параметра, который станет GET-переменной
$l1->js('change')->univ()
->redirect($this->api->getDestinationURL(null, array('member'=>123);
но поскольку я не знаю значение, выбранное на стороне клиента, это не поможет.
В javascript вы можете выбрать текущее значение поля выбора, используя
this.options[this.selectedIndex].value
и в jquery вы можете использовать
$('#name').val();
но пока что самое близкое, что у меня есть, это использование
$l1->js('change')->univ()->redirect($this->api->getDestinationURL(null,
array('member'=>$l1->js(true)->val())));
Это делает перенаправление на
http://localhost/test1/scrumwall?
member=%24%28%27%23test1_scrumwall_form_member%27%29.val%28%29
Итак, есть ли идеи о том, какой будет правильный синтаксис, чтобы он оценивал идентификатор выбранной опции, а не помещал имя выпадающего списка в качестве значения параметра?
Бит $ l1-> js ('change') добавляет onchange = "" в раскрывающийся список - возможно, есть какой-то способ
вставьте javascript непосредственно между кавычками, но не видите никаких примеров.
Я пробовал это так
$l1->js('change')->univ()->js(null,
"window.location='http://localhost/test1/scrumwall?member='+this.options[this.selectedIndex].value");
но он не помещает это между кавычками в onchange, вместо этого он добавляет его как функцию jquery (см. Результат в виде браузера) ниже, связанный с раскрывающимся списком, но это также не работает.
$('#test1_scrumwall_form_member').bind('change',function(ev){
ev.preventDefault();ev.stopPropagation();
$('#test1_scrumwall_form_member').univ().js(null,'window.location=\x27
http://localhost/test1/scrumwall?member=\x27+this.options[this.selectedIndex].value')
});
так что я не могу понять, как это сделать с ATK4. Любая помощь приветствуется.
Спасибо