3

我想根据用户选择的国家/地区更改“电话”的输入掩码。我很确定我的问题在于没有 jQuery 代码以正确的语法更改元素 ID。

首先检查联系人是否已存档,如果找到则显示数据。当我找到具有国际电话号码的联系人时,该号码会根据需要显示。我们的大多数联系人来自美国,所以我选择该代码作为初始显示。当新联系人从美国以外的国家(或国际代码“1”)注册时,就会出现问题。然后掩蔽不会更改为 iphone。

 <html>
 <head>
 <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js">
 </script>
 <script src="jquery.js" type="text/javascript"></script>
 <script type="text/javascript" src= "../js/jquery.maskedinput.js"></script>
 <script>
 function show() 
 {
 var a = document.getElementById('country');
 var a = a.value.split(",")[1];
 document.getElementById("code").value= a+"+";
 if(a!=1)
jQuery(this).prev("phone").attr("id", "iphone");
 else
jQuery(this).prev("iphone").attr("id", "phone");    
 };
 </script>
 </head>
 <body>

 <p>Country:&nbsp;
<select id="country" name="country" onchange="show(this)">       
    <option value="United States,1" selected>United States</option><?php $code=1 ?>
    <option value="Sweden,37">Sweden</option>
 </p>

 <p>Phone:&nbsp;
 <?php echo '<input name="code"  id="code" size="1" type ="text" disabled="disabled" value="'.$code.'+"/>';
 if($code!=1)
 {
echo '<input name="phone"  id="iphone" type="text" value="'.$result1[phone].'"/>';
 }  
 else
 {
echo '<input name="phone" id="phone" type="text" value="'.$result1[phone].'"/>';
 }  
 ?>
 </p>
 <script>jQuery(function($)
 {
   $("#phone").mask("(999) 999-9999");
   $("#iphone").mask("99 99 99 99? 99");  
 }); 
 </script>

 </body>
 </html>
4

3 回答 3

1

我想你有一个我也遇到过的问题。结果,我开发了一个插件,它选择与输入的电话号码匹配的输入掩码。看看演示

于 2013-04-22T11:44:00.617 回答
0

我相信您可以在他们选择一个国家/地区时更改课程,然后使用新课程重新初始化您的面具:

<select id="country" name="country" onchange="show(this)">       
    <option value=".unitedStates" selected>United States</option><?php $code=1 ?>
    <option value=".sweden">Sweden</option>

<input type="text" id="phoneNumber" />

JS:

$('#country').change(function(){
  $("select option:selected").each(function () {
    var className = $(this).val();
    $('#phoneNumber').removeClass();
    $('#phoneNumber').addClass(className);
    initMasks();
  });
});

function initMasks(){
  $('.unitedStates').mask("(999) 999-9999");
  $('.sweden').mask("99 99 99 99? 99");  
}
于 2013-02-22T19:55:14.757 回答
0

感谢 user1477388,我看到了我所做的不同。而不是试图改变元素的 id,我真的只是想改变面具。选择选项是从包含国家和代码(拨号代码)的 mySQL 数据表中填充的

 <select id="country" name="country" onchange="show(this)">
 <?php     
 $sql1="SELECT* FROM countries ORDER BY countryName";
 $query1= mysql_query ($sql1) or die("Couldn't execute check country query. ". mysql_error()); 
 while($row1=mysql_fetch_array($query1))
 {
  /* Option values are added by looping through the array */
 echo '<option value="'.$row1[countryName].','.$row1[code].'"\">'.$row1[countryName].'</option>';
 }
 echo "</select>";
 ?>

然后在脚本中通过读取来确定拨号代码($code) - [var a = a.value.split(",")[1]; ] If dialing code = 1 format #phone is (999) 999-9999 else format #phone is 99 99 99 99 99

   <script>
   function show() 
   {
    var a = document.getElementById('country');
    var a = a.value.split(",")[1];
   document.getElementById("code").value= a+"+";
   $code=a;
   if(a!=1)
   { 
   $("#phone").mask("99 99 99 99? 99");}
   else
   {$("#phone").mask("(999) 999-9999");
   }
   };
   </script>
于 2013-02-23T15:54:21.893 回答