我有一個頁面被定義爲一個下拉列表中選擇的值重新加載頁面如下在ATK4,如何在一個選擇框
$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
因此,任何想法是什麼正確的語法,以便它評估選擇的選項的ID,而不是將下拉列表的名稱作爲參數值?
$ l1-> js('change')位在下拉列表中添加了一個onchange =「」 - 也許有一些方法可以直接在引號之間插入javascript,但看不到任何示例。
我嘗試了這種方式
$l1->js('change')->univ()->js(null,
"window.location='http://localhost/test1/scrumwall?member='+this.options[this.selectedIndex].value");
,但它並不穿上平變化引號之間的,而是會將其作爲一個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做到這一點。任何援助讚賞。
謝謝
這是手動的方式做到這一點。退房http://api.jquery.com/jQuery.param – romaninsh