2012-11-26 140 views
3

我的表單中有一個下拉列表,其中包含執行AJAX回發並呈現另一個城市下拉列表的國家/地區。onchange事件監聽器未在文本框上觸發

我有文本框字段phonenumber已被分配一個事件偵聽器,爲了調試的目的,它只是拋出一個警報信息框到屏幕上。

方案1時的形式被加載的國家下拉

被預選與登錄的用戶的國家,文本框字段PHONENUMBER被分段的爲好。然後我改變這個電話號碼的文本框,每次都彈出警告框。即事件似乎一直在發射。

方案2 - 問題

場景1中之後,如果用戶改變了國家的選擇,有一個ajaxpostback當形式呈現完畢後,當我做在文本框中PHONENUMBER另一個變化,該事件不不開火了,任何想法爲什麼?

代碼: 事件偵聽器註冊

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

<script> 
    $(document).ready(function() { 
     document.getElementById("ctl00_ContentPlaceHolder1_officePhone_txtInput").addEventListener("change", phoneNumberParser, true); 
     document.getElementById("ctl00_ContentPlaceHolder1_country_cbInput_Input").addEventListener("change", triggerCountryChange); 
     //alert(document.getElementById("ctl00_ContentPlaceHolder1_officePhone_txtInput").value); 
     //$("ctl00_ContentPlaceHolder1_officePhone_txtInput").bind("onchange", phoneNumberParser); 
    }); 
      </script> 

的onChange代碼

<script> 
var selectedcountrycodeval; 

    function triggerCountryChange() { 


     //var phoneNumber = document.getElementById("ctl00_ContentPlaceHolder1_officePhone_txtInput").value; 
     //alert(phoneNumber); 
     //ctl00$ContentPlaceHolder1$country$cbInput_Input country name input tag 
     var regionCode = document.getElementById("ctl00_ContentPlaceHolder1_country_cbInput_Input").value; 
     alert(regionCode); 
     regionCode = getCountry(regionCode); 
     selectedcountrycodeval = regionCode; 
     alert(regionCode); 
     //document.getElementById("ctl00_ContentPlaceHolder1_officePhone_txtInput").addEventListener("change", phoneNumberParser); 
     //alert(document.getElementById("ctl00_ContentPlaceHolder1_officePhone_txtInput").addEventListener); 
     //document.getElementById("ctl00_ContentPlaceHolder1_country_cbInput_Input").addEventListener("change", triggerCountryChange); 
    } 
    function phoneNumberParser() { 

     alert(selectedcountrycodeval); 
     var phoneNumber = document.getElementById("ctl00_ContentPlaceHolder1_officePhone_txtInput").value; 
     alert(phoneNumber); 
} 
</script> 

形成價值觀

國家

<INPUT style="WIDTH: 220px" 
     id=ctl00_ContentPlaceHolder1_country_cbInput_Input 
     class=ComboBoxInput_WindowsXP tabIndex=1 value="United Kingdom" 
     name=ctl00$ContentPlaceHolder1$country$cbInput_Input></INPUT> 

電話

<INPUT style="WIDTH: 221px" 
     id=ctl00_ContentPlaceHolder1_officePhone_txtInput class=inputTextBox 
     tabIndex=1 value="+44 (20) 8222-2662" maxLength=64 
     name=ctl00$ContentPlaceHolder1$officePhone$txtInput > 
+0

您似乎發送的Ajax請求在哪裏?您是否在Ajax請求後即時創建電話號碼輸入? –

回答

1

看起來你似乎將電話號碼輸入的形式被刷新後。對於這種情況,最好是代表事件。

$(document).on('change' , '[id*="officePhone_txtInput"]', phoneNumberParser); 
+0

@Anil似乎在使用jQuery 1.3.2。不知道他是否可以使用'.on()'方法。 – Bruno

+0

看起來他使用的是由谷歌Cdn託管的文件..他總是可以更新到最新版本將更改網址.. –

+0

同意。這是有道理的。 – Bruno