0

現在、ドロップダウン メニューから選択した値を渡して、g:selectドロップダウン メニューと同じ gsp 内にあるスクリプトに渡そうとしています。何らかの理由で、スクリプトを実行する呼び出しは、関数自体を呼び出し、スクリプトに渡す必要がある値を取得しているコントローラー関数から値を渡さない場合にのみ機能します。問題は、コントローラーから gsp に値を渡してスクリプトに送信できるようにするところから来ていると確信していますが、渡されたときに機能しない理由はわかりません。

これは私のスクリプトのコードです:

function locationParameterSet(data){
    alert("This worked " + data);
}

g:selectこれは私のドロップダウンメニューのコードです:

<g:select name="locationSelection" from="${location_names}" value="${params.site_id}"
    optionKey="location_id" optionValue="short_name" noSelection="['': '----Site----']"
    onchange="${remoteFunction(controller: 'term', action: 'locationParameterSet',
    onComplete: 'locationParameterSet(data)', params: '\'location_id=\' + this.value',
    options: '[asynchronous: false]')}"/>

これは、ドロップダウン メニューからオプションが選択されたときに実行されるメソッドです。コントローラー内のメソッドが終了すると、それはidbackに渡され、実行されます。私のスクリプト関数を呼び出します:g:selectonComplete: 'locationParameterSet(data)'onCompletelocationParameterSet(data)

def locationParameterSet = {
    session["location_id"] = params.location_id
    def location_id = params.location_id
    [location_id: location_id]
}

idスクリプトが実行されるように gspに送信する別の方法はありますか?

4

1 に答える 1

0

あなたの質問で私が理解できないことの1つは、次のとおりです。

なぜ ID を gsp に再度送信する必要があるのですか? あなたはすでにあなたの選択にそれを持っています。

onchange ハンドラーが機能する場合は、次のように簡単にする必要があります。

<g:select name="locationSelection" from="${location_names}" value="${params.site_id}"
    optionKey="location_id" optionValue="short_name" noSelection="['': '----Site----']"
    onchange="locationParameterSet(this.value)"/>

どういうわけか、onchange は grails 選択の /latest/docs に含まれていません。私はそこで見たことを覚えていますが、とにかくそれは grails 機能ではなく、単なる JavaScript イベントです。書くのと同じはずです:

   var sel = document.getElementById('giveSelectAnId');
   sel.onchange = function() {
      locationParameterSet(this.value)
   }
于 2013-11-13T22:38:14.747 に答える