0

我目前正在尝试使用列表框中的“onclick”事件来更新文本框。

基本上,在设置“onclick”事件属性时,我需要传递选定的列表框值。但是,正在发生的问题是,当一切都是第一次构建时,没有选定的值,所以它试图传递一个空值并输出错误。

一些代码...

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

如果我将 SelectedValue 设置为特定索引,那么每次用户单击时,无论他们选择什么,硬编码的索引值都是始终返回的值。

有没有办法让'onclick'做我需要的事情呢?我没有发布任何进一步的代码,因为我认为它不会有帮助,但如果需要,我可以。谢谢。

4

1 回答 1

1

您需要了解服务器端和客户端之间的区别。

服务器端是发生在服务器上的一切(例如 ASP、ASP.NET、PHP),用于创建发送到浏览器的 HTML。它还处理用户提交内容(回发)时浏览器返回的信息。

客户端是一旦接收到 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:在类型事件的开头放置 - 浏览器已经知道它是 javascript。如果您在标记中onclick使用 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 回答