javascript - onchange 事件监听器未在文本框上触发

标签 javascript jquery ajax onchange

我的表单有一个包含国家/地区的下拉列表,该列表执行 AJAX 回发并呈现另一个包含城市的下拉列表。

我有一个文本框字段 phonenumber,它已分配了一个事件监听器,出于调试目的,它只是向屏幕抛出一个警报消息框。

场景一

当表单被加载时,国家下拉列表被预选为登录用户的国家,文本框字段电话号码也被预呈现。然后我更改了这个电话号码的文本框,每次都会弹出警告框。即事件似乎一直在触发。

场景 2 - 问题

在场景 1 之后,如果用户更改国家/地区选择,则会出现 ajaxpostback,当表单完成呈现时,当我再次更改文本框电话号码时,事件不再触发,有什么想法吗?

代码: 事件监听器注册

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

on更改代码

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

最佳答案

看起来您似乎是在刷新表单后添加输入的电话号码。对于这种情况,最好委托(delegate)事件。

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

关于javascript - onchange 事件监听器未在文本框上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569736/

相关文章:

javascript - 拼接未从数组中删除元素

javascript - 面向对象的 Javascript 和多个 DOM 元素

javascript - 这段 JavaScript 代码有什么问题?一直循环不停

javascript - jquery 验证在 ie9、ie8、ie7、ie6 中不起作用

javascript - 从 Javascript 访问 polymer 函数

javascript - 替换网页上的文字

jquery - 3 按钮状态-正常、翻转(悬停)、事件(单击)与 jquery?

javascript - 我们可以将 CSS 动画设置为在前一个子元素动画之后发生吗?

php - Jquery从循环中获取输入值

javascript - 表单的提交按钮不起作用。你能告诉我我做错了什么吗?