2016-08-04 13 views
1


Zuerst Entschuldigung für mein schlechtes Englisch. Ich versuche Validierungslänge auf Eingabefeld zu machen. Wenn ich manuell eingabe, funktioniert es, aber wenn ich Virtual Keyboard mit Jquery (ich benutzte JKeyboard) verwendet, funktioniert es nicht. Irgendeine Lösung dafür?Validierungslänge funktioniert nicht, wenn virtuelle Tastatur verwendet wird

Es ist mein Validation Länge Script:

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); 
    }; 
}); 

Es ist mein JKeyboard Script:

$(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(); 
    });*/ 

}); 

Es ist mein HTML-Code:

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

Antwort

0

Sie nicht .jkeyboard-jk hören, die Ihre virtuell Tastatur. Fügen Sie einen Listener hinzu. FYI erstellen Sie eine separate Funktion für die Validierung. Sowohl Ihre Eingabe- als auch Ihre virtuellen Tastatur-Listener können diese Validierungsfunktion auslösen.

+0

ich benutzte #jkeyboard zum Zuhören. Was soll ich dafür tun? kannst du mir beispiel oder sonstiges sagen –