2013-02-22 65 views
3

我想根據用戶選擇的國家更改「手機」的輸入蒙版。我敢肯定,在沒有jQuery代碼來改變元素ID在正確的語法存在我的問題。jQuery根據所選國家更改手機輸入蒙版

首先我檢查,看看是否找到的聯繫人是已經在文件和顯示數據。當我找到國際電話號碼的聯繫人時,號碼會根據需要顯示。我們大部分的聯繫人都來自美國,所以我選擇該代碼作爲初始顯示。當一個新的接觸從非美國以外的國家(或國際代碼「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> 

回答

1

我相信你可以改變這個類的時候,他們選擇一個國家,然後用新的類重新初始化你的面具:

<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"); 
} 
+0

感謝您的時間。它給了我不同的觀點。而不是改變ID,我最終做的是改變(#phone).mask 現在很好用。謝謝。 – seymour37 2013-02-23 15:30:26

+0

不客氣! – user1477388 2013-02-23 18:31:06

0

感謝user1477388,我看着我在做什麼不同。 ,而不是試圖改變元素的ID,我真的只是想改變面具。 [VAR A = A - 選擇選項,從包含的國家和代碼(區號)通過閱讀它確定一個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>"; 
?> 

然後在腳本中的撥號代碼($代碼)填充。 value.split( 「」)[1]; ] 如果區號= 1個格式#phone是(999)999-9999 else格式#phone是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> 
1

我想你有我有太多經歷了一個問題。因此,我已經開發了選擇輸入的面具,其匹配輸入的電話號碼更多的插件。看看demo