2017-03-02 1 views
0

J'utilise MagicSuggest et j'ai besoin d'obtenir la longueur des sélections sur un événement de flou. Mon code fonctionne très bien si j'ajoute une nouvelle sélection via la touche ENTRÉE mais ne fonctionne pas si je choisis une sélection existante de la liste.MagicSuggest: Obtenir la longueur des sélections sur le flou

Cas d'utilisation

  1. si l'utilisateur choisit des suggestions via le ENTRER clé, longueur = 1 - Rectifier
  2. si l'utilisateur choisit des suggestions via le clic de souris, longueur = 0 - incorrect, doit être 1

jsFiddle https://jsfiddle.net/a1ejqtae/7/

HTML

<form action=""> 
    <label for="keyword">Keywords</label> 
    <input type="text" id="keywords"> 
</form> 

JS

$('form input').on('blur', function(){ 

var selectionLength = $('form .ms-sel-item').length; 
$('.selection-name').text(selectionLength); 
console.log('Selection is ' + selectionLength); 

if(selectionLength > 0){ 
console.log('Selection is greater than 0'); 
} 

}); 

PS Est-ce que quelqu'un sait ce qui est arrivé à ce plug-in, la page GitHub est toujours en cours d'exécution, mais le site avec toute la documentation et des exemples est en baisse - http://nicolasbize.com/magicsuggest/doc.html. Dieu merci pour wayback machine.

Répondre

1

I code testé ci-dessous dans votre jsFiddle et il a bien fonctionné:

var labelName = $('label').text(); 
console.log('label = ' + labelName); 

$('#keywords').magicSuggest({ 
    hideTrigger: true, 
    placeholder: 'Start typing for keyword suggestions', 
    useZebraStyle: true, 
    data: ["banshee", "fargo", "house", "csi", "ncis"], 
    method: 'get' 
}); 

var update = function(){ 
    var selectionLength = $('form .ms-sel-item').length; 
    $('.selection-name').text(selectionLength); 
    console.log('Selection is ' + selectionLength); 
} 

$('form input').on('blur', function(){ 

update(); 

}); 
$(window).on('keyup', function(e){ 
if(e.keyCode === 13){ 

    update(); 
    $(this).blur(); 
} 

}); 
$(window).on('click', function(e){ 
    update(); 
    $(this).blur(); 
}); 

Laissez-moi savoir s'il y avait un problème. J'espère que ça aide.

+0

Merci, mais je reçois toujours le même résultat en cliquant sur la souris. https://jsfiddle.net/r87zvxy5/1/ –

+0

@ClintonGreen Désolé, j'ai mis à jour ma réponse. Cela devrait fonctionner avec le clic aussi. – alireza

+1

Merci pour l'aide :) –