jquery每个文本框

时间:2011-08-25 11:03:48

标签: javascript jquery

我使用以下脚本绑定每个文本框上的按键事件,以便在达到maxlength时,焦点将切换到下一个输入字段。将classname作为函数的参数传递。

function autoFocusPhoneFields(txtbox1ID,txtbox2ID) {
    $('input.'+txtbox1ID+', input.'+txtbox2ID+'').each(function() {
        $(this).bind('keypress', function(){
        if(this.value.length == $(this).attr('maxlength')) {
            $(this).next('input').focus();
        } 
     });
});
}
    $(document).ready(function(){
    autoFocusPhoneFields('mobileprefix','mobilecode');
});

正如我已经提到过两个不同的输入..它运行良好。但是有任何方法可以获得类名并通过每个输入框来附加按键事件。

3 个答案:

答案 0 :(得分:3)

如果我理解正确,您希望将相同的事件处理程序附加到每个 input字段?只需使用选择器:

$(':text') 

(适用于所有input type="text")字段。

所以只需改变

$('input.'+txtbox1ID+', input.'+txtbox2ID+'').each(function() {

为:

$(':text').each(function() {

答案 1 :(得分:2)

如果我找到你,你只需要使用类型选择器进行输入。你也可以摆脱调用每个通过输入迭代,因为绑定事件到乘法元素通过它们进行交互。因此,您可以将代码更改为以下内容:

var autoFocusPhoneFields = function () {
    $('input:text').keypress(function() {
        if(this.value.length == $(this).attr('maxlength'))
            $(this).next('input').focus();            
    });
}
$(autoFocusPhoneFields);

答案 2 :(得分:1)

这很好用。

HTML

<input id="one" class="inp" maxlength="5" />
<input id="two" class="inp" maxlength="3" />
<input id="three" class="inp" maxlength="2" />

JS Part

$(function(){
    var onpress = function(){
        var val = $(this).val();
        var next_input = $(this).next('input');
        var mx = $(this).attr('maxlength');
        try {
            mx = Number(mx);
            if (next_input.length >= 1 && val.length >= mx){
                next_input.focus();
            }
        } catch(x){}

    }

    $('input.inp').bind('keypress', onpress);
});