2016-12-06 56 views
1

如何在文本框中切换字符和数字输入?JQuery切换数字和字符输入

我有一个jQuery函数,以允许在输入

只有数字
$('.numeric').on('input', function (event) { 
    this.value = this.value.replace(/[^0-9]/g, ''); 
}); 

我只应用类numeric在输入框中,它会限制字符输入。

我的问题是这样的。

我有一个选择框与各国列出

<select class="form-control" id="country_select" name="country"> 
    <option value="44">United Kingdom</option> 
    <option value="681">Wallis and Futuna</option> 
    <option value="967">Yemen</option> 
    <option value="260">Zambia</option> 
    <option value="263">Zimbabwe</option> 
</select> 

每当我选择United Kingdom我想删除其上有numeric类我的输入框中输入字符限制。我想允许字母和数字是在文本框

<input placeholder="Zip/Postal Code" class="numeric" id="company_zip" name="company_zip" type="text"> 

我有这样的jQuery代码输入,但它无法正常工作。我试图删除numeric类以允许输入字母。但它不起作用。

$('#country_select').change(function(){ 
    var zip = $('#company_zip'); 
    var country = $(this); 
    $('#area_code').val($(this).val()); 

    if (country.val() == 44) { 
     zip.removeClass('numeric'); 
    }else{ 
     if (!zip.hasClass('numeric')) { 
      zip.addClass('numeric'); 
     } 

    } 
}); 

回答

4

它没有工作的原因是因为事件已经附加到元素。移除类不会将已经关联的事件移除到元素。

你还是必须在文本框的更改事件所选选项值的检查:

var country = $('#country_select'); 
$('.numeric').on('input', function (event) { 
    if(country.val() == 44) 
    this.value = this.value.replace(/[^0-9]/g, ''); 
}); 
+0

@KimCarlo:很高兴帮助:) –

0

当改变事件被触发你的类被删除,但已被已添加到输入框的行为将保持直到我们刷新页面。您可以通过包括

` $('.numeric').on('input', function (event) { 
     this.value = this.value.replace(/[^0-9]/g, ''); 
    }); ` 

当改变事件被触发实现这个

的一种方式。