【问题标题】:Validation Length Not Working if Using Virtual Keyboard如果使用虚拟键盘,验证长度不起作用
【发布时间】:2016-12-10 00:58:54
【问题描述】:


首先对不起我的英语不好。我试图在输入字段上进行验证长度。如果我手动输入它可以工作,但如果我使用用 Jquery 制作的虚拟键盘(我使用 JKeyboard)它就不能工作。有什么解决办法吗?

这是我的验证长度脚本:

validationLength = 10;

$('#jkeyboard').on('keyup keydown change keypress', function () {
    if($(this).val().length > validationLength){

        val=$(this).val().substr(0,$(this).val().length-1);
        $(this).val(val);
    };
});

这是我的 JKeyboard 脚本:

$(document).ready(function () {

    $('#jkeyboard').focus(function() {

        var keys = [['`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '='],
                    ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']'],
                    ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', "'",'#'],
                    ['z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/']];

        var $keyboard = $('<div/>').addClass('jkeyboard-jk');
        var buttons = [];

        for(var i = 0; i < keys.length; i++){
            var $wrap = $('<div/>');

            for(var k = 0; k < keys[i].length; k++){
                var button = $('<button/>').text(keys[i][k]);
                $wrap.append(button);
            }
            buttons.push($wrap);
        }

        $keyboard.append(buttons);

        if(!$('.jkeyboard-jk').is('*')){
            $('body').append($keyboard);
        }

    });

    // button click functions


    function insertAtCaret(areaId,text) {
    debugger;
        var txtarea = document.getElementById(areaId);
        var scrollPos = txtarea.scrollTop;
        var strPos = 0;
        var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? 
            "ff" : (document.selection ? "ie" : false ) );
        if (br == "ie") { 
            txtarea.focus();
            var range = document.selection.createRange();
            range.moveStart ('character', -txtarea.value.length);
            strPos = range.text.length;
        }
        else if (br == "ff") strPos = txtarea.selectionStart;

        var front = (txtarea.value).substring(0,strPos);  
        var back = (txtarea.value).substring(strPos,txtarea.value.length); 
        txtarea.value=front+text+back;
        strPos = strPos + text.length;
        if (br == "ie") { 
            txtarea.focus();
            var range = document.selection.createRange();
            range.moveStart ('character', -txtarea.value.length);
            range.moveStart ('character', strPos);
            range.moveEnd ('character', 0);
            range.select();
        }
        else if (br == "ff") {
            txtarea.selectionStart = strPos;
            txtarea.selectionEnd = strPos;
            txtarea.focus();
        }
        txtarea.scrollTop = scrollPos;
    }

    $(document).on('click', '.jkeyboard-jk button', function(e){
        e.preventDefault();
        var key = $(this).text();

        insertAtCaret('jkeyboard', key);    
    });

  $(document).on('click', '.delete', function(e){

            var $content = $('#jkeyboard');
            var html = $content.val();

            $content.val(html.substr(0, html.length - 1));
            return false;


    });


    /*$('.jkeyboard').blur(function(){
        $('.jkeyboard-jk').remove();
    });*/

});

这是我的 HTML 代码:

<input type="text" name="msidn" id="jkeyboard">

【问题讨论】:

    标签: jquery validation input virtual-keyboard input-field


    【解决方案1】:

    您没有在听.jkeyboard-jk,这是您的虚拟键盘。给它添加一个监听器。 仅供参考,创建一个单独的函数进行验证。您的输入和虚拟键盘侦听器都可以触发该验证功能。

    【讨论】:

    • 我用#jkeyboard 来听。我该怎么办?你能告诉我例子或任何
    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多