2016-07-25 119 views
0

我試圖格式化基於國家的電話號碼字段。當用戶填寫詳細信息時邏輯工作正常,但在國家更改並重新填寫時不起作用。 例如: 填寫德國的表格,然後如果嘗試將縣更改爲美國並填寫電話「+」,即使格式不同,也不會重新加載頁面。表單驗證Jquery對象

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

你能提供一個示例代碼的[小提琴](https://jsfiddle.net/)嗎?它會使調試方式更快 –

+0

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

+0

是否必須在鍵入時進行格式設置?重新格式化onchange號碼可能會更容易。爲每個國家創建格式化程序方法,並附上正確的/在國家更改時拆除上一個。 您應該將原始數字作爲自定義數據屬性存儲在元素上。 也看看這實際驗證:http://html5pattern.com/Phones – imjosh

回答

0

不知道這是否是您的錯誤的原因,但此行需要得到來自

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

校正爲該

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

這是一個快速追趕,只是使用您的瀏覽器JavaScript控制檯進行調試。

查看更新的小提琴here。您可能還想將起始括號添加到您的國際前綴中。