9

我需要根据 lang 限制输入框内容。进入。

例如:-

如果输入的是韩文字符串,则允许字符数为8。如果输入的是汉字字符串,则允许字符数为5。如果输入英文,则允许字符数为12。

我的代码适用于 IE、Firefox 和 Chrome 中的英文字符。但是,此代码对于韩文和中文字符无法正常工作。即使我增加了有效长度,我的代码也总是将字符串的长度减少到 2。请尽快提出一些解决方案。

我正在粘贴我的代码以进行检查。

<!DOCTYPE html>
<html>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script>
            document.onkeydown=function() {


                    var text = $('#lang').val();
                    var hangul = new RegExp("[\u1100-\u11FF|\u3130-\u318F|\uA960-\uA97F|\uAC00-\uD7AF|\uD7B0-\uD7FF]"); 
                    var china = new RegExp("[\u4E00-\u9FFF|\u2FF0-\u2FFF|\u31C0-\u31EF|\u3200-\u9FBF|\uF900-\uFAFF]"); 

                // alert(hangul.test(text));
                    if(hangul.test(text))
                    {
                        limit = 8; 
                        //console.log("korean");
                        limitCharacters('lang', limit , text);

                    }else if(china.test(text))
                    {
                        limit = 5; 
                        //console.log("china");
                        limitCharacters('lang', limit , text);

                    }else {
                        limit = 11; 
                        limitCharacters('lang', limit , text);

                    }
         };

        function limitCharacters(textid, limit, text)
        {
          //alert('here in limit funt.');
          var textlength = text.length;
           //alert(textlength);
          if(textlength > limit )
           {
             $('#'+textid).val(text.substr(0,limit));
             return false;
           }else {

            $('#'+textid).val(text);
            $('#txt').html(text);
            return true;
           }

        } 



    </script>
<body>
    <input type="text" id="lang" />

</body>
</html>
4

2 回答 2

1

我解决了这个问题,现在它对我来说很好。据我了解,IE 不支持子字符串。

<html>
        <title> test</title>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script type="text/javascript" src="http://css-browser-selector.googlecode.com/git/css_browser_selector.js"></script>
        <script src="./beta.fix.js"></script>
        <script>
             var keyFix = new beta.fix('lang');

            jQuery(document).ready( function($) {
                    jQuery('#lang').bind('keyup', checklang);

                });     

              function checklang() {
                        var textid = jQuery(this).attr("id");
                        var text = jQuery(this).val();
                        var hangul = new RegExp("[\u1100-\u11FF|\u3130-\u318F|\uA960-\uA97F|\uAC00-\uD7AF|\uD7B0-\uD7FF]"); 
                        var china = new RegExp("[\u4E00-\u9FFF|\u2FF0-\u2FFF|\u31C0-\u31EF|\u3200-\u9FBF|\uF900-\uFAFF]"); 

                       // alert(hangul.test(text));
                        if(china.test(text))
                        {
                            limit = 5;
                            console.log("chiness"); 
                        }else if(hangul.test(text))
                        {
                            limit = 8; 
                            console.log("korean"); 
                        }else {
                            limit = 11; 
                            console.log("english"); 
                        }
                        jQuery('#'+textid).attr("maxlength", limit);
             };
        </script>
    <body>
        <input type="text" id="lang" size="100" />

    </body>
    </html>
于 2013-11-15T05:17:42.427 回答
0

你可以试试这个:

var hangul = new RegExp("[\u1100-\u11FF|\u3130-\u318F|\uA960-\uA97F|\uAC00-\uD7AF|\uD7B0-\uD7FF]");
var china = new RegExp("[\u4E00-\u9FFF|\u2FF0-\u2FFF|\u31C0-\u31EF|\u3200-\u9FBF|\uF900-\uFAFF]");

$("#lang").on("keypress keyup", function () {
    var that = $(this);
    var text = that.val();

    if (china.test(text)) {
        limit = 5;

    } else if (hangul.test(text)) {
        limit = 8;

    } else {
        limit = 11;
    }
    that.attr("maxlength", limit);
    if (text.length > limit) that.val(text.substring(0, limit))
});

也在 http://jsfiddle.net/sWPeN/1/

于 2013-11-14T21:33:39.670 回答