0

現在、リストボックス内の「onclick」イベントを使用してテキストボックスを更新しようとしています。

基本的に、「onclick」イベント属性を設定するときは、選択したリストボックスの値を渡す必要があります。ただし、発生している問題は、すべてが初めてビルドされるときに、選択された値がないため、nullを渡そうとしてエラーが発生することです。

いくつかのコード...

//listbox attribute creation...
Me.listbox.Attributes("onclick") = "javascript:board_click_button('" & Me.listbox.SelectedItem.Text & "');"

SelectedValueを特定のインデックスに設定すると、ユーザーがクリックするたびに、ユーザーが何を選択したかに関係なく、ハードコードされたインデックス値が常に返されます。

'onclick'を取得して必要なことを実行する方法はありますか?役に立たないと思ったので、これ以上コードを投稿しませんでしたが、必要に応じて投稿できます。ありがとう。

4

1 に答える 1

1

サーバー側とクライアント側の違いを理解する必要があります。

サーバー側は、ブラウザーに送信されるHTMLを作成するために使用されるサーバー(ASP、ASP.NET、PHPなど)で発生するすべてのものです。また、ユーザーがデータを送信したときにブラウザーから返される情報(ポストバック)も処理します。

クライアント側とは、HTMLを受信した後、またはユーザーが要素をクリックするなど、ページ上で何かを行ったときにブラウザで発生するすべてのことです。

このコードはサーバー上で作成されているため、ブラウザーに関する限り、テキストパラメーターは変更されません(表示のために行に分割されます)...

Me.listbox.Attributes("onclick") = "javascript:board_click_button('" 
                                   & Me.listbox.SelectedItem.Text & "');"

ブラウザは次のようなものを受け取ります(可視性のために簡略化されています)...

<select onclick="javascript:board_click_button('hello world');" ...

代わりに、あなたが欲しいと思うのはこれです...

Me.listbox.Attributes("onclick") = "board_click_button(this.options[this.selectedIndex].text);"

これにより、javascriptがthis変数(イベントの原因となったオブジェクト、この場合は<select>)を使用して、現在選択されているアイテムのテキストを検索できるようになります。

javascript:(また、タイプイベントの開始時に配置する必要がないことに注意してくださいonclick。ブラウザはすでにjavascriptであることを認識しています。タグ内でjavascriptを使用する場合にのみ配置する必要がありますhref<a>

アップデート

これは私にとって正しく機能する非常に簡単なテストです(アラートボックスに、選択されたアイテムのテキストを表示します)...

<asp:ListBox runat="server" onclick="alert(this.options[this.selectedIndex].text);">
  <asp:ListItem Value="1">one</asp:ListItem>
  <asp:ListItem Value="2">two</asp:ListItem>
  <asp:ListItem Value="3">three</asp:ListItem>
</asp:ListBox>
于 2012-07-31T13:42:07.870 に答える