2010-09-29 6 views
2

je dois modifier dynamiquement une variable avec l'attribut "nom" d'un lien - le code ci-dessous ...jquery/javascript ne pas décrocher la valeur sur un clic

 <input type="text" class="datepicker" id="dp1"> 

     <a href="javascript:;" class="tab" name="1,2">test button</a> 

et

$(document).ready(function(){ 

    var pickable = { dp1: [4,5,6] }; 

    $(".tab").click(function() { 
     var test = $(this).attr("name").split(","); 
     pickable = { dp1: test }; 
    }); 

    $(".datepicker").each(function() { 
     $(this).datepicker({ 
      beforeShowDay: function(date){ 
       var day = date.getDay(), days = pickable[this.id]; 
       return [$.inArray(day, days) > -1, ""]; 
      }, 
     }); 
    }); 

});​ 

Tous idées pourquoi cela ne fonctionne pas ??

+0

qu'est-ce que vous obtenez? la chaîne "1, 2" à la place? – sheeks06

+0

pas sûr d'être honnête ... comment puis-je savoir? – Tom

+0

La valeur "test" de var est toujours une chaîne – Joberror

Répondre

1

Vous pouvez essayer quelque chose comme ça

$(document).ready(function(){ 

var pickable = ["2","3","4","5"]; 

function closedDays(date){ 
    var sDate = date.getDay().toString(); 
    if ($.inArray(sDate, pickable) == -1) return [false,"",""]; 
    else return [true, ""]; 
} 

$(".tab").click(function() { 
    pickable = $(this).attr("name").split(","); 
    closedDays; 
}); 

$(".datepicker").each(function() { 
    $(this).datepicker({ 
     beforeShowDay: closedDays 
    }); 
}); 
});​ 

Vous pouvez l'essayer ici http://jsfiddle.net/ZKW3b/2/

1

Si vous voulez dire que la fonction transmise à click n'est pas exécutée, vérifiez si ce code est interprété avant le html.

Essayez d'envelopper le code dans la fonction ready:

$(function() { 
    var pickable = { dp1: [4, 5, 6] }; 
    $(".tab").click(function() { 
     var test = [ $(this).attr("name") ]; 
     pickable = { dp1: test }; 
    }); 
}); 

Si le problème est que vous voulez que la valeur de chaîne de name, "1, 2", être un tableau, vous devez changer votre un code bit:

var pickable = { dp1: [4, 5, 6] }; 

$(".tab").click(function() { 
    var test = $(this).attr("name").split(","); 
    pickable = { dp1: test }; 
}); 

maintenant, la valeur "1, 2" est divisé par le , jeton et seperated en un tableau de valeurs: ["1", "2"]

+0

Je l'ai déjà fait, je ne l'ai pas inclus dans le code que j'ai posté. désolé – Tom

+0

Je vois ce que vous dites mais ça ne marche toujours pas ... voici un lien vers le code mis en contexte, peut-être que ça marchera ... http://jsfiddle.net/BhzE5/2/ – Tom

0

Si vous avez l'intention d'avoir var pickable disponible n'importe où dans votre code, vous pouvez utiliser, jquery data. Vous pouvez essayer quelque chose comme ceci:

$(document).data('pickable', { dp1: [4, 5, 6] }); 
    $(".tab").click(function() { 
     var test = $(this).attr("name").split(','); 
     $(document).data('pickable', { dp1: test }); 
    }); 
+0

Votre exemple va créer un tableau dans un tableau: '[[" 1 "," 2 "]]' –

+0

oui, j'ai enlevé l'entourage []. Merci – erickb

Questions connexes