我目前正在尝试使用列表框中的“onclick”事件更新文本框。
基本上,在设置'onclick'事件属性时,我需要传递所选的列表框值。但是,正在发生的问题是,当第一次构建所有内容时,没有选定的值,因此它会尝试传递null和错误。
一些代码......
//listbox attribute creation...
Me.listbox.Attributes("onclick") = "javascript:board_click_button('" & Me.listbox.SelectedItem.Text & "');"
如果我将SelectedValue设置为特定索引,则每次用户单击时,无论选择什么,硬编码索引值都将始终返回。
有没有办法让'onclick'做我需要的东西呢?我没有发布任何进一步的代码,因为我认为它没有帮助,但我可以,如果它需要。感谢。
答案 0 :(得分:1)
您需要了解服务器端和客户端之间的区别。
服务器端是服务器上发生的所有事情(例如ASP,ASP.NET,PHP),用于创建发送到浏览器的HTML。它还处理用户提交内容(回发后)时浏览器返回的信息。
客户端是收到HTML后在浏览器上发生的所有事情,或者用户在页面上执行某些操作(如单击元素)。
这个代码是在服务器上创建的,因此就浏览器而言,text参数永远不会改变(为了可见性而拆分线路)......
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>
)来查找当前选定的项目文本。< / p>
(另请注意,您不需要将javascript:
放在onclick
类型事件的开头 - 浏览器已经知道它是javascript。如果你在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>