2010-07-07 11 views
1

L'idée: Je définis la valeur d'une entrée avec type = "hidden" via JavaScript normal ou jQuery. Le problème: ni jQuery ni document.getElementById ne trouveront l'entrée cachée, même si je suis absolument sûr que le sélecteur est correct et qu'il n'y a pas d'éléments conflictuels.Définition de la valeur d'une entrée masquée

Le code: Je ne peux pas vraiment en poster beaucoup, car c'est plein de PHP plutôt compliqué qui me rend confus quand je le regarde.

Voici le javascript:

$("#" + input.id.substr(0,2) + "_budget_hidden").val(budg_total); 

Note: il n'y a rien de mal avec le sélecteur, et la « entrée » est un autre élément que j'utilise pour faire référence à ce qui est caché.

Voici le HTML:

<input type="hidden" name="s<?=$step_counter?>_budget_hidden" 
     id="s<?=$step_counter?>_budget_hidden" value="0" /> 

Le code est une sorte de hors contexte, mais il est plus d'un problème général avec Javascript qu'une erreur de syntaxe. Pensées?

Répondre

2

En $("#" + input.id.substr(0,2) + "_budget_hidden").val(budg_total); vous prenez deux caractères avant le premier caractère de soulignement dans votre ID caché. Cependant votre id caché ont un seul char 's'

EDIT

Ok le <?= ?> était caché avant la modification de la question. Appellez-vous votre script après l'événement body onload?

EX:

$(document).ready(function(){ 
    $("#" + input.id.substr(0,2) + "_budget_hidden").bind("keyPressed",function(){ 
     $("#" + input.id.substr(0,2) + "_budget_hidden").val(budg_total); 
    } 
}); 
+0

+1 Je pensais exactement la même chose – galambalazs

+0

Il est appelé dans l'événement onkeypress pour la variable "input" que je référence dans le sélecteur jQuery. – Will

+0

Oh, je vois ce que vous dites. L'événement est défini en ligne, sur l'entrée elle-même. onkeypress = "updateDifferences (this)" Cela ne devrait donc pas poser de problème, en théorie. – Will

0

Je pense que input.id.substr (0,2) dit commencer au début de la chaîne, prenez 2 caractères et utiliser.

http://www.w3schools.com/jsref/jsref_substr.asp

Essayez d'utiliser Firebug pour voir ce que le résultat de cet appel de méthode est.

+0

Oui, c'est ce que fait la sous-chaîne. Comme je l'ai dit, c'est un système plutôt compliqué sorti hors contexte, mais je garantis que le sélecteur particulier est précis et correspond à un élément de forme caché dans la page. J'ai utilisé Firebug, et il n'y a pas d'erreur ou d'avertissement. – Will

1

FYI: Nous pouvons obtenir la valeur d'entrée cachée en utilisant jQuery, même nous pouvons également éditer toute valeur d'entrée cachée en utilisant jQuery.

Je pense que votre façon d'obtenir la valeur cachée en utilisant la méthode 'substr' pose problème. Vous utilisez comme substr(0, 2) donc soyez sûr que la variable $step_variable est un nombre à un chiffre, sinon votre code ne retournera pas le résultat correct.

Je donne un exemple de code ci-dessous, vérifiez-le une fois.

Voici le javascript:

 
    var input_id = $("hidden_val").attr("id").substr(1); 
    $("#" + input_id + "_budget_hidden").val(budg_total); 

Voici le HTML:

 
    input type="hidden" class="hidden_val" name="s_budget_hidden" id="s" value="0" 

Je pense que cela vous aidera. Faites-moi savoir si vous ne suivez pas ce flux pour résoudre votre problème.

+0

C'est un excellent point, cela aurait pu causer des erreurs potentielles là-bas. J'ai juste décidé d'utiliser exploser à la place et évité de vilains problèmes. Cependant, l'entrée particulière sur laquelle j'expérimentais avait une valeur de step_counter de 2, donc de toute façon cela n'aurait pas d'importance. Je ne suis pas convaincu à 110% que le sélecteur est correct - je l'ai fait écho et il montre exactement la même chose que l'identifiant de l'entrée cachée à laquelle j'essaye d'accéder. C'est le jQuery/Javascript, pas le sélecteur lui-même. – Will

Questions connexes