je les valeurs suivantes d'une forme étant accessible par jQuery en utilisant .VAL():jQuery .val() pas mise à jour sur
var un0 = $("input.e0").val();
var un1 = $("input.e1").val();
var un2 = $("input.e2").val();
var un3 = $("textarea.e3").val();
Les valeurs d'origine dans ceux des éléments ont été ajoutés précédemment par un script différent qui boucle les valeurs à partir des données XML AJAX.
Le problème est que lorsque je modifier les valeurs sous la forme (à savoir les écraser) et soumettre le formulaire à jour mon db, les valeurs d'origine , plutôt que les valeurs mises à jour sont envoyés. C'est comme si les nouvelles valeurs étaient ignorées par .val(). Si je teste ce qui est posté à partir du formulaire avec une alerte (un0); la valeur nouvellement éditée n'est pas récupérée et je peux voir que l'original est utilisé.
Remarque. Ce n'est pas le cas pour la zone de texte (un3) qui fonctionne correctement et qui se met à jour avec une nouvelle valeur lors de l'édition.
Des idées pour lesquelles jQuery n'utilise pas le nouveau fichier .val() des entrées?
Modifié plus source:
Les valeurs sont définies dans un bloc de code précédent après un appel XML à partir du db. Ceci est exécuté quand un article est cliqué.
// Construct the output info (for both read and write)
for (var i = 0; i < field_count; i++){
data = eval("r" + i);
$(".r"+i).replaceWith("<span class=\"r" + i + "\">" + data + "</span>");
$(".e"+i).attr("value", data);
}
Ensuite, la version en lecture seule est affichée. Il y avait un lien qui permet de désactiver la version en lecture seule et le formulaire avec les mêmes valeurs.
Puis soumettre jQuery appelle la fonction Ecraser:
$(".overwrite").click(function() {
// Other conditionals, then ...
if (category=="3"){
// phone
var un0 = $("input.e0").attr('value');
var un1 = $("input.e1").attr('value');
var un2 = $("input.e2").attr('value');
var un3 = $("textarea.e3").val();
// Encode each using myKey
e0 = Passpack.encode("AES",un0,myKey);
e1 = Passpack.encode("AES",un1,myKey);
e2 = Passpack.encode("AES",un2,myKey);
e3 = Passpack.encode("AES",un3,myKey);
queryString = 'user_id=' + user + '&cat_name=' + cat_name + '&id=' + item_no + '&v1='+ e0 + '&v2=' + e1 + '&v3=' + e2 + '&v4=' + e3;
}
// Other conditionals, then …
// Call edit.php to make update on db
$.ajax({
type: "POST",
url: "app/edit.php",
data: queryString,
success: function() {
$("#edit_" + cat_name).hide();
$("#delete_success").hide();
$("#right_read").show();
$("#write_success").show();
$("#read_" + cat_name).show();
get_list(0,category);
read_db(category,item_no);
}
});
time_out();
return false;
});
Les valeurs sous la forme, après l'édition ne sont pas mis à jour et la soumission utilise les valeurs initiales fixées par le code ci-dessus.
à quel point le code que vous avez collé en cours d'exécution? –
Etes-vous sûr de mettre à jour les variables? Ce sera bien si vous avez posté la source complète que vous utilisez. – kgiannakakis
Les variables, e0, e1, etc sont d'abord mis acheter un bloc de code différent. (Les valeurs en lecture seule sont également définies, en utilisant r0, r1, etc. Ensuite, un script bascule la version en lecture seule des données vers le formulaire qui a ces valeurs dans les champs. (jQuery en cache un et montre l'autre.) Ensuite, le formulaire peut être mis à jour en le surclassant. Il existe un lien de mise à jour qui exécute une fonction pour mettre à jour les valeurs et soumettre un script PHP pour mettre à jour le DB (également AJAX). Le code ci-dessus fait partie de cette fonction, qui est appelée lorsque le lien de mise à jour est cliqué. – Mark