2012-06-27 134 views
0

所以我有一個文本框,我添加了markAsException的onchange事件。Textbox onchange事件

我的JavaScript -

function markAsException(recordID) { 
    //alert("Exception"); 

    //mark exception column 
    document.getElementById("ctl00_cpMain_lblScrollException_" + recordID).innerText = "Exception"; 
    document.getElementById("ctl00_cpMain_lblScrollException_" + recordID).style.color = "#FF0000"; 
    document.getElementById("ctl00_cpMain_tdScrollException_" + recordID).style.backgroundColor = "#99CCFF"; 

    //enable comments ddl and remove blank (first item) 
    document.getElementById("ctl00_cpMain_ddlCommentId_" + recordID).disabled = false; 
    document.getElementById("ctl00_cpMain_ddlCommentId_" + recordID).focus(); 
    document.getElementById("ctl00_cpMain_ddlCommentId_" + recordID).options[0] = null; 
} 

我想要做的是,當用戶在文本框更改值,以紀念一列作爲「例外」,然後集中一個下拉列表,他們必須選擇例外的原因。

這就是發生了什麼..如果我在該文本框中並更改它,然後選項卡,它將選項卡下拉列表。

但是,如果我更改了值,然後只需單擊窗體上的另一個文本框,我就不會關注下拉列表。

我該如何做到這一點?

+1

不是一個答案,因爲這是題外話,但我不相信功能你可以假設.NET控件每次都會以相同的ClientID生成。本文可能有所幫助:http://encosia.com/robust-aspnet-control-referencing-in-javascript – Liath

回答

0

我會建議使用JQuery的change()函數。

其優點是它將在不同的瀏覽器中更穩定。

喜歡的東西:

$('#<%= TextBox1.ClientID %>').change(function(){ 
     // extract the recordID from the textbox - perhaps with an attribute? 
     markAsException(recordID); 
    }); 

我的意見是越來越長,所以我擴大:

在JQuery的documentation看看對於其設置爲頁面加載完成。如果TB是你的文本框的ID你的選擇會是

$('#<%= tb.ClientID %>') 

我會建議你更換你的代碼,並使用

tb.Attributes.Add("recordID", recordId.ToString()); 

這將增加你需要到文本標籤的ID。一旦你在我上面列出你可以使用以下的選擇,以獲得的recordId在javascript

var recordID = $('#<%= TextBox1.ClientID %>').attr('recordID'); 

總之

$(document.ready(function(){ 
    $('#<%= tb.ClientID %>').change(function(){ 
     var recordID = $('#<%= tb.ClientID %>').attr('recordID'); 
     if(recordID){ 
     markAsException(recordID); 
     } 
    }); 
    }); 
+0

我的c#代碼是 - tb.Attributes.Add(「onchange」,「markAsException('」+ recordId +「' )「); ..我將如何改變? (其中tb是TextBox控件) – duckmike

+0

@duckmike查看我的更新 – Liath