首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >onkeyup事件停止onchange ajax事件触发

onkeyup事件停止onchange ajax事件触发
EN

Stack Overflow用户
提问于 2011-03-23 22:29:43
回答 2查看 2.1K关注 0票数 1

因此,我在文本框的onchange事件上有一个AJAX调用,在onkeyup事件上有一个非常简单的掩码函数(向SSN添加破折号)。这两个函数本身都工作得很好,但是,如果掩码插入了一个破折号,然后我移出了文本框,onchange事件将不会触发。

有人知道为什么吗?我的猜测是,通过使用掩码函数更改值,文本框不再认为发生了任何更改。

谢谢

代码语言:javascript
代码运行次数:0
运行
复制
SSN: <input id="SSN" maxlength="11" size="8" onchange="validateSSN();" onkeyup="mask()">
<span id="SSNnote"></span>

<script type="text/javascript">

function validateSSN(){
    var cfc = new myajax();
    cfc.setCallbackHandler(function(AjaxResults) {UpdateValidationNotes('SSNnote', AjaxResults);});
    cfc.ValidateSSN(document.getElementById("SSN").value);
}

function mask(){

    var temp = document.getElementById("#WhichName#").value;
    var e = window.event;
    if (e.keyCode == 189){

        document.getElementById("SSN").value = temp.substring(0,temp.length-1);
        return false;
    }

    if ( temp.length == 3 || temp.length == 6)
        if (e.keyCode != 8)
            document.getElementById("SSN").value = document.getElementById("SSN").value + '-';

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-23 22:34:37

是的,你是对的,如果你使用javascript改变框的值,onchange将不会触发。因此,您需要在mask-function中手动调用validateSSN()

票数 3
EN

Stack Overflow用户

发布于 2011-07-27 13:49:23

JavaScript函数:

代码语言:javascript
代码运行次数:0
运行
复制
<script type="text/javascript">
  function mask(str, textbox, loc, delim) {      
    var locs = loc.split(',');

    for (var i = 0; i <= locs.length; i++) {
      for (var k = 0; k <= str.length; k++) {
        if (k == locs[i]) {
            if (str.substring(k, k + 1) != delim) {
                str = str.substring(0, k) + delim + str.substring(k, str.length)
            }
        }
      }
    }
    textbox.value = str
  }
</script>

在body标签中编写以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
<label class="label">Social Security Number: *</label>
<input type="text" size="15" name="social_security_number" class="input"
    id="txtsocial_security_number"  runat="server" 
    onKeyUp="javascript:return mask(this.value,this,'3,6','-');"
    onBlur="javascript:return mask(this.value,this,'3,6','-');" maxlength="11">

这将导致以下格式: 797-97-9797

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5406777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档