次のように定義されたドロップダウンリストのあるページがあります
$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変数となる2番目のパラメーターとして値の配列を追加できます。
$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");
ただし、これを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でこれを行う方法を理解することはできません。どんな援助もありがたいです。
ありがとう