2010-02-22 3 views
2

Je tente de déclencher la saisie semi-automatique Jquery depuis l'extérieur du champ. J'utilise un clavier Jquery à l'écran, de sorte que les événements du clavier ne sont pas activés.Trigger Jquery autocomplete via un événement scripté sur 1.2.6

Je ne peux pas utiliser Jquery.Event ou trigger() car je suis bloqué avec Jquery 1.2.6. Je sais qu'il existe d'autres claviers à l'écran, mais tous les autres que j'ai testés ont un décalage. fieldselection ajoute un peu, mais c'était raisonnablement rapide comme c'est. Juste .. pas de tir automatique.

Je ne suis pas au-dessus de rouler ma propre saisie semi-automatique, mais le reste du code est si simple et je veux juste m'assurer que je ne manque pas quelque chose de simple. :)

fieldselection est une version modifiée qui prend en charge backspace d'ici: http://designshack.co.uk/tutorialexamples/vkeyboard/

<script type="text/javascript" src="js/jquery.fieldselection.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
// Keeps track of last input that was clicked in. 
    $('input[type="text"], textarea').focus(function() { 
     selectedInput = $(this); 
    }); 
    // Add autocomplete. 
    $('#search-customers-input').autocomplete(
     'js/ps-action.php?searchCustomers=1'); 
    // Attach action to virtual keyboard keys. 
    $('.keypad-literal').click(function() { 
     selectedInput.replaceSelection($(this).text(), true); 
     // I don't chain these as for some reason it doesn't work. 
     selectedInput.focus(); 
     // Can't use as I'm on 1.2.6 
     //var key = $(this).text(); 
     //var e = jQuery.Event("keydown"); 
     //e.which = key.charCodeAt(0); 
     //selectedInput.trigger(\'focus\').trigger(e); 
    }); 
}); 
</script> 
<button type=button class="keypad-key keypad-literal">q</button> 
<button type=button class="keypad-key keypad-literal">w</button> 
<button type=button class="keypad-key keypad-literal">e</button> 
... etc ... 
<button type=button class="keypad-key large" 
    onClick='selectedInput.parents("form").submit();'>Enter</button> 

Répondre

0

avez-vous essayez jQuery.noConflict()? (docs ici: http://api.jquery.com/jQuery.noConflict/)

<script type='text/javascript' src='jquery-1.4.2.min.js'></script> 
<script type='text/javascript'> 
    // create namespace for jquery 1.4.2 
    var j142 = $.noConflict(true); 
</script> 
<script type='text/javascript' src='jquery-1.2.6.min.js'></script> 

<script type='text/javascript'> 
    // jquery 1.4.2 codes here 
    j142(document).ready(function() { 
     j142('p#new').text('jquery 1.4.2 yay!'); 
     }); 

    // jquery 1.2.6 codes here, falling back to the default $ 
    $(document).ready(function() { 
     $('p#old').text('jquery 1.2.6 yay!'); 
     }); 
</script> 
+0

Non, je ne connaissais pas ça .. mais .. J'ai essayé de remplacer 1.2.6 avec 1.4.2 (quelque chose que je ne peux pas le faire dans la production) et tout semble fonctionner, mais appeler Event et trigger pour chaque clic l'a vraiment ralenti. –