Javascript 更改VB列表框“onclick”事件上的文本框

Javascript 更改VB列表框“onclick”事件上的文本框,javascript,asp.net,vb.net,Javascript,Asp.net,Vb.net,我目前正在尝试使用列表框中的“onclick”事件更新文本框 基本上,在设置“onclick”事件属性时,我需要传递所选的listbox值。但是,问题是,当所有内容都是第一次构建时,没有选择的值,因此它会尝试传递null和errors 一些代码 //listbox attribute creation... Me.listbox.Attributes("onclick") = "javascript:board_click_button('" & Me.listbox.SelectedI

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

基本上,在设置“onclick”事件属性时,我需要传递所选的listbox值。但是,问题是,当所有内容都是第一次构建时,没有选择的值,因此它会尝试传递null和errors

一些代码

//listbox attribute creation...
Me.listbox.Attributes("onclick") = "javascript:board_click_button('" & Me.listbox.SelectedItem.Text & "');"
如果我将SelectedValue设置为特定的索引,那么无论用户选择什么,每次单击时,都会返回硬编码的索引值


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

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

服务器端是服务器上发生的一切,例如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") = "javascript:board_click_button('" 
                                   & Me.listbox.SelectedItem.Text & "');"
<select onclick="javascript:board_click_button('hello world');" ...
这将允许javascript使用this变量,该变量是导致事件的对象,在本例中,用于查找当前选定的项文本

另外,请注意,您不需要在onclick类型事件的开始处放置javascript:浏览器已经知道它是javascript。如果在标记的href中使用javascript,则只需将其放入

更新

这是一个非常快速的测试,它可以正确地为我在一个警报框中显示所选项目的文本

<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>

你的答案肯定去掉了空值,但我仍然得到一个空文本框,因为“this.options”中没有任何内容。我认为现在的情况是,“onclick”属性被设置为一个“空”选择,并且它在每次调用“onclick”时都会重新使用该值,而不是使用新的选定值。我怎样才能解决这个问题?@Jesse,你确定这个选项是空的吗?我的代码的全部要点是,它应该在selectedIndex处选择选项列表中的项。可能值得将其作为参数传递,然后查看函数本身中的可用内容,即onclick=board\u click\u buttonthis;功能板\u单击\u按钮trl{alertctrl.options.length;}好的,我想我在调试禁用时在其他地方遗留了一个问题,我确信这是一个问题。我将对此进行调查,同时,这可能解决了问题。@Jesse,您可以确认您没有使用列表框的服务器端SelectedIndex属性,并且您肯定正在使用客户端this.SelectedIndex?我已经创建了一个测试站点,它在没有issue@Jesse,请参阅我在答案中添加的示例