2012-07-31 80 views
0

我目前正在嘗試使用列表框中的'onclick'事件更新文本框。更改VB列表框'onclick'事件的文本框

基本上,當設置'onclick'事件屬性時,我需要傳遞選定的列表框值。但是,正在發生的問題是,第一次構建所有內容時,沒有選定的值,因此它會嘗試傳遞null和錯誤。

一些代碼...

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

如果我每次設置的SelectedValue到特定索引,然後用戶點擊,無論他們選擇什麼,硬編碼的指數值是什麼總是返回。

有沒有辦法讓'onclick'去做我需要的東西呢?我沒有發佈任何進一步的代碼,因爲我認爲它不會有幫助,但如果需要的話,我可以。謝謝。

回答

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:onclick類型的事件開始 - 瀏覽器已經知道它的JavaScript你只需把它放在你的<a>標籤的href內使用JavaScript。)

UPDATE

這是一個非常快速的測試,工作正常,我(在一個警告框顯示,從已選擇的項目中的文本)...

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

你的答案肯定是擺脫了null,但由於'this.options'中沒有任何內容,所以我仍然得到一個空的文本框。我認爲正在發生的是'onclick'屬性被設置爲'空'選擇,並且每次'onclick'時重新使用該值而不是使用新的選定值。我怎樣才能解決這個問題? – 2012-07-31 13:51:30

+0

@Jesse,你確定'this.options'是空的嗎?我的代碼的全部內容是它應該在'selectedIndex'的選項列表中選取項目。這可能是值得傳遞'這個'作爲參數,然後看看什麼是可用的內部函數(即''onclick =「board_click_button(this);''''board_click_button(ctrl){alert(ctrl.options.length) ;}' – freefaller 2012-07-31 14:00:10

+0

好的,我想我在調試的時候有其他地方存在的問題(我肯定是禁用了某些東西),我會研究它,同時這可能解決了這個問題 – 2012-07-31 14:10:13