我試圖預先填寫不同國家(美國,加拿大(xxx)xxx-xxxx和其他國家+ xxxxxxx格式的電話號碼字段。這裏的問題是當我改變國家的邏輯似乎沒有工作,因爲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());
}
})
}
});
});
你不能有'.bind()'和'。對()'在相同的代碼,'.bind()'是對老年人depricated版本,而' .on()'是新的方式,我不認爲任何版本都允許這兩個工作 –
,你必須編寫'var $ phone = $(this);''沒有'var'你正在使它成爲全局的並且實際上分配到相同的屬性 –
問題是它第一次正常工作,但是當我改變下拉值並嘗試重新輸入信息時,它從前面的下拉列表國家 – temperature