2013-06-27 60 views
1

我有幾個telerik radCombobox並且每個都有相應的隱藏字段。 組合的前綴爲cmb,其隱藏字段的前綴爲hd。我用這些來檢測是否有組合框的值發生了變化,或者我需要將組合框重置爲初始值。我有以下的JavaScript被解僱onClienSelectedIndexChanged ...將組合框中的值與隱藏字段中的值進行比較

function cmbSelectedIndexChanged(sender, eventArgs) { 

            var selectedItem = eventArgs.get_item(); 

            var selectedItemText = selectedItem != null ? selectedItem.get_text() : sender.get_text(); 

            var hd = sender.attr('id').replace("cmb", "hd"); 

            if (selectedItemText !== $('#' + hd).val()) { 

                registerChange(); 

            } 

        } 

我得到一個錯誤 - 對象沒有這個屬性或方法 - 上線開始變種HD

上午什麼我做錯了...?

+0

如果您的傳遞對象嘗試var hd = $(sender).attr('id')。replace(「cmb」,「hd」);如果你傳遞id使用var hd = $('#'+ sender).attr('id')。replace(「cmb」,「hd」); –

+0

謝謝rakhee ...他們是對象所以我試圖$(發件人),現在得到一個JavaScript運行時錯誤'attr(...)'爲null或不是同一行上的對象。如果我嘗試你的其他建議,我得到一個js運行時語法錯誤無法識別的表達式:#[object Object] – Mych

+0

好吧,意味着你的傳遞元素對象不需要嘗試第二個...! –

回答

0

您需要搜索控件的ClientId,因此代碼將不起作用。取而代之的

var hd = sender.attr('id').replace("cmb", "hd");

你應該嘗試沿着線的東西:

var hd = sender.get_id().replace("cmb", "hd").replace(/_/,"$");

上面的代碼將在Telerik的組合框的客戶端ID轉換成「名」的屬性asp隱藏控件的元素。我相信下面的代碼應該可以解決所描述的問題(我爲我是用這個作爲教學輔助較早額外的評論道歉,並認爲這可能是對其他用戶有益)

function cmbSelectedIndexChanged(sender, eventArgs) { 
    // Get Selected Item 
    var selectedItem = eventArgs.get_item(); 
    // Get Selected Text 
    var selectedItemText = selectedItem != null ? selectedItem.get_text() : sender.get_text(); 
    // Convert Telerik element id to Asp Control name 
    var hd = sender.get_id().replace("cmb", "hd").replace(/_/g,"$"); 
    // Compare the asp:HiddenField value to the selected text 
    if (selectedItemText !== document.getElementsByName(hd)[0].value) { 
     registerChange(); 
    } 
} 

在調試這個地方我沒有」沒有在頁面上註冊JQuery,所以我更新的函數使用.getElementsByName函數,而不是JQuery等效的$('[name="' + hd + '"]')

相關問題