2016-07-25 10 views
0

国に基づいて電話番号フィールドの書式を設定しようとしています。ユーザーが詳細を入力しても正常に動作しますが、国が変更されて再び入力されたときは機能しません。 例: ドイツのフォームに入力してから、ページを再読み込みせずに郡を米国に変更して記入してください。電話の記入は「+」の形式が異なる場合でも追加されます。これはあなたのエラーの原因だったが、この行は単なる使用、それは速くキャッチしたこのフォームの検証Jqueryオブジェクト

$(this).val("+" + $(this).val()); 

$(this).val("+" + $this.val()); 

から修正を取得する必要がある場合

$(document).ready(function($){ 

$('#country').on('change', function() { 


     if (this.value == 'US' || this.value == 'CA') 
     { 


     $('#C_BusPhone') 



    .keydown(function (e) { 
     var key = e.charCode || e.keyCode || 0; 

     $phone = $(this); 

      if (key !== 8 && key !== 9) { 
      if ($phone.val().length === 4) { 
       $phone.val($phone.val() + ')'); 
      } 
      if ($phone.val().length === 5) { 
       $phone.val($phone.val() + ' '); 
      }   
      if ($phone.val().length === 9) { 
       $phone.val($phone.val() + '-'); 
      } 
     } 


     return (key == 8 || 
       key == 9 || 
       key == 46 || 
       (key >= 48 && key <= 57) || 
       (key >= 96 && key <= 105)); 
    }) 

    .bind('focus click', function() { 
     $phone = $(this); 

     if ($phone.val().length === 0) { 
      $phone.val('('); 
     } 
     else { 
      var val = $phone.val(); 
      $phone.val('').val(val); 
     } 
    }) 

    .blur(function() { 
     $phone = $(this); 

     if ($phone.val() === '(') { 
      $phone.val(''); 
     } 
    }); 

     } 
     else 
     { 
     $('#C_BusPhone') 

    .keydown(function (e) { 
     if ($(this).val().indexOf("+") === -1) { 
     $(this).val("+" + $this.val()); 
    } 
     }) 

} 

    }); 
    }); 
+0

サンプルコードを[fiddle](https://jsfiddle.net/)で提供できますか?デバッグの高速化 –

+0

https://jsfiddle.net/ranred/dap3L426/ – temperature

+0

入力時に書式設定を行う必要はありますか?おそらく、番号を変更する方が簡単です。各国のフォーマッタメソッドを作成し、国が変更されたときに前のものを削除します。 生データをカスタムデータ属性として要素に格納することをお勧めします。 また実際の検証のためにこれを見てください:http://html5pattern.com/Phones – imjosh

答えて

0

わかりませんデバッグのためにあなたのブラウザのjavascriptコンソール。

更新されたフィデルhereを参照してください。あなたの国際接頭辞にも開始括弧を追加したいかもしれません。

関連する問題