2017-07-25 16 views
0

Je travaille avec un sondage, avec une section de note après chaque question. Les notes ne doivent apparaître qu'après avoir appuyé sur End ou F10 la première fois. Après avoir passé à la question 2, puis revenant à la question 1, la section de note pour la question 1 devrait à nouveau être masquée s'il n'y avait pas de notes.Utiliser .val(). Length! = 0 pour afficher la zone de texte

Cependant, s'il y a une écriture dans la section notes du tout, je veux qu'ils restent visibles après le retour à la question 1 de la question 2.

Je suis en train d'accomplir ceci en utilisant .val(). length! = 0 pour afficher les notes s'il y a même un caractère écrit. Je ne suis pas sûr si mon problème ici est avec .val(). Longueur ou avec ma commande preventDefault, je veux empêcher l'action par défaut qui dans ce cas est de ne pas afficher les notes.

<style> 
#[% QuestionName() %]_div {display:none} 
</style> 

<script> 

$(document).keydown(checkNote); 
function checkNote(f){ 
f = f || window.event; 
if (f.keyCode == '121' || f.keyCode == '35'){ 
    f.preventDefault(f); 
    $("#[% QuestionName() %]_div").css('display', 'block'); 
    } 
} 

function displaynote(d){ 
    d = d || window.event; 
    if ($("#[% QuestionName() %]_div").val().length != 0) { 
     d.preventDefault(d); 
     $("#[% QuestionName() %]_div").css('display', 'block'); 
     } 
     } 
<script> 

Si quelqu'un pouvait me dire où ma question est peut-être ou de fournir une alternative à .val() de longueur.! = 0 si c'est le problème, que ce serait très utile.

Merci!

+0

cela va comparer la valeur de la longueur, êtes-vous sûr que vous ne voulez pas juste val ou juste la longueur ?: – ThisGuyHasTwoThumbs

+0

Val travaillerait mieux? Est-ce que val pour les nombres seulement ou aussi les lettres? Tant qu'il y a même un personnage dans la boîte, la lettre ou le numéro, je veux qu'il apparaisse. J'ai aussi essayé val et il n'a pas fait ce que j'avais besoin de faire, alors peut-être que le problème est ailleurs dans mon code. – JakeHammond

+0

Val récupère la valeur de l'élément dom, donc il peut retourner une chaîne ou un int, et peut-être haha ​​essayer de consigner la console – ThisGuyHasTwoThumbs

Répondre

2

L'élément #[% QuestionName() %]_div est-il une entrée?

$(...).val() Fonctionne uniquement pour les éléments d'entrée (si vous appelez la fonction, par exemple, un div, il retournera toujours une chaîne vide). Si vous travaillez avec div, vous pouvez utiliser $(...).text() ou $(...).html() pour récupérer son contenu.

+0

Thankyou, cela est utile de savoir que $ (...). Val() ne fonctionne que pour l'entrée éléments. J'ai essayé .text() et .html à utiliser avec la div, mais cela n'a pas fonctionné, même si je les ai peut-être mal utilisés. J'ai essayé d'obtenir l'entrée 'var $ input1; $ ('# [% QuestionName()%]'). Focus (function() {'' $ input1 = $ (this);}); '' if ($ input1.val(). length! = 0) 'et insérez-le ici, mais je n'ai pas réussi à le faire fonctionner - JakeHammond 6 mins ago – JakeHammond

0

J'ai finalement découvert quel était le problème, il y en avait quelques-uns. Je me suis déplacé la fonction displaynote en $ (document) de l'événement .ready appeler quand la page était prêt parce qu'il n'a pas été appelé,

if ($('#[% QuestionName() %]').val().length != 0) { 

Je n'utilise val(). Length mais assuré je un élément non div, merci pour ce Gabriel, puis enlevé d = d || window.event; et d.preventDefault (d) parce que $ (document) .ready ne prend aucun argument