2009-04-09 22 views
10

我面臨的問題中調用JavaScript onchange事件是這樣的:通過編程方式改變文本框的值

  • 我有一個日期範圍側的日曆控件,一個文本框。
  • 當用戶從日曆中選擇一個日期時,它將該日期填入文本框
  • 發生這種情況時,我想觸發一個javascript函數,但是'onchange'事件似乎沒有發生。

我非常希望能夠到事件添加作爲文本框的屬性,是這樣的:

txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2)); 

在此先感謝

更多信息: 輸入日期到C#中的文本框。日曆控件在頁面上有一個事件處理程序。當選擇日期時,事件處理程序將日期放入文本框中。我已經嘗試將焦點設置到文本框中,然後在文本框上放置一個onBlur屬性,但是文本框似乎從未獲得焦點。

我想我可以直接調用JavaScript函數在這一點上做ClientScript.RegisterClientScriptBlock或類似的東西,但這似乎馬虎,從來沒有像我想要的那樣工作。

回答

7

你誤解了onchange事件應用於textarea時會做什麼。在失去焦點或擊中輸入之前,它不會開火。爲什麼不選擇填充文本區域中的onchange函數呢?

退房這裏查看更多關於onchange事件:w3schools

2

Onchange僅當用戶通過鍵盤輸入內容時纔會觸發。 A 可能 workarround可能會首先集中文本字段,然後再更改它。

但是,當用戶點擊日期時,爲什麼不提取事件?已經必須有一些JavaScript。

+0

日期設置在txtbox使用C#,而不是JavaScript。我已經嘗試將焦點設置到文本框中,並使用onBlur事件,但文本框似乎永遠不會正確對焦。 – 2009-04-09 19:34:10

+0

@馬修 - 這沒有任何意義。如果日期在服務器端設置,那麼如果你已經在一個函數內的服務器上,你有什麼問題調用Onchange事件? – TStamper 2009-04-09 19:38:28

-4

的「平變化」的時候,屬性以編程方式更改或當用戶進行了更改,然後着重從現場離開僅觸發。

你看過使用YUI的日曆對象嗎?我已經編寫了一個解決方案,將yui日曆放入yui面板中,並隱藏面板直到單擊相關圖像。我可以看到兩者之間的變化。

http://developer.yahoo.com/yui/examples/calendar/formtxt.html

+5

以編程方式更改輸入值時,不會觸發onchange事件。 – 2009-04-10 04:24:44

7

可以觸發事件簡單地

 
document.getElementById("elementID").onchange(); 

我不知道是否在某些瀏覽器,這並不工作,但它應該在FF 3和IE 7+

+0

我需要從c#,而不是JavaScript做到這一點。 – 2009-04-09 19:32:41

1

你工作人口來自服務器端。使用registerclientscript會將腳本放在表單的開頭..您將需要使用RegisterStartupScript(Block)將腳本放置在頁面末尾。

前者嘗試在dom中存在文本區域之前運行腳本,後者將在該頁面中的元素創建後運行腳本。

18

這是一個老問題,我不知道這是否會幫助,但我已經能夠用編程方式觸發事件:

if (document.createEvent && ctrl.dispatchEvent) { 
    var evt = document.createEvent("HTMLEvents"); 
    evt.initEvent("change", true, true); 
    ctrl.dispatchEvent(evt); // for DOM-compliant browsers 
} else if (ctrl.fireEvent) { 
    ctrl.fireEvent("onchange"); // for IE 
} 
0

你可以把它放在一個不同的階層和然後調用一個函數。這個工程時,阿賈克斯刷新

$(document).on("change", ".inputQty", function(e) { 

//Call a function(input,input); 
}); 
相關問題