0

2 つのテキスト フィールドからのユーザー入力をカウントして制限しようとしました。つまり、最大文字数は 20 で、ユーザーは両方のテキスト フィールドに 20 文字しか入力できません。

$(document).ready( function() {

jQuery.fn.getLength = function(){
var count = 0;
var max=$("#max").val();
this.each(function(){
   count += jQuery(this).val().length;
     });   
 var rem=max-count;
return rem;
};

var $inputs= jQuery('#left,#right');
$inputs.bind('keyup',function(){
    var remain=$inputs.getLength();
 jQuery('#count').html($inputs.getLength());
    $("#left").keyup(function(){
        if($("#left").val().length > remain){
        $("#left").val($("#left").val().substr(0, remain));
        }
    });

    $("#right").keyup(function(){
        if($("#right").val().length > remain){
        $("#right").val($("#right").val().substr(0, remain));
        }
    });

});

});

ただし、単一のテキスト ボックスでのみ機能し、2 つのフィールドから値を取得しません。助けてください..

4

4 に答える 4

2

デモ: http://jsfiddle.net/EEbuJ/2/

JQuery

$('#left, #right').keyup(function(e) {
    if (maxLen() <= 20)
    {
        // Save the value in a custom data attribute
        $(this).data('val', $(this).val());
    } else {
        // over-ride value with saved data
        $(this).val($(this).data('val'));
    }
});

function maxLen() {
    var x = 0;

    $('#left, #right').each(function() {
        x += $(this).val().length;
    });

    return x;
};

これにより、指定された入力の合計文字数が 20 以下の場合、入力の入力値がカスタム データ属性に保存されます。

最大文字数に達すると、入力された値の保存を停止し、値を以前の保存 (つまり、最大値未満) に戻して、値を効果的に元に戻します。

于 2013-09-09T10:40:03.617 に答える