2011-03-23 14 views
1

したがって、onkeyupイベントのテキストボックスと非常に単純なマスク関数(SSNにダッシュを追加する)のonchangeイベントでAJAX呼び出しを行います。これらの関数は両方とも自分自身で正常に動作しますが、マスクがダッシュを挿入してからテキストボックスの外に移動すると、onchangeイベントは発生しません。onkeyupイベントは、発火からonchange ajaxイベントを停止します

誰にも理由は何ですか?私の推測では、マスク関数で値を変更すると、テキストボックスは何も変更されていないと考えています。あなたはJavaScriptを使用して、ボックスの値を変更した場合

おかげ

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 + '-'; 

} 

答えて

3

はい、あなたは正しい、onchangeは発生しません。したがってmask -function内でvalidateSSN()を手動で呼び出す必要があります。

+1

私はあなたの答えを読んだ後、私の頭の中にある錆びた歯車が粉砕を開始し、これまでのような問題を覚えています。マスク関数でvalidateSSN()を呼び出すことができないため、AJAXにメッセージが表示され、フィールドを離れるときにのみ表示されるようにします。だから、onchangeからonblurへの素早い変更が問題を解決しました!なぜ私はそれ以前に考えなかったのか分かりませんが、私は多くの錆に似ています....ありがとう! – Limey

1

JavaScriptの機能:

<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タグにこのコードを書く:

<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

関連する問題