J'ai ce code:
<input type="hidden" id="editorTitle" name="title" value="home">
<textarea name="text" id="editorText"></textarea>
Mais quand j'écris $('#editorTitle').val()
et $('#editorText').html()
, $('#editorTitle').val()
est 'non défini' et $('#editorText').html()
est vide?
Qu'est-ce qui ne va pas?
Modifier:
Voici mon code complet:
function openEditor() {
$("#editor").show().animate({ width: 965, height: 380 }, 1500);
$("#editor textarea").show();
}
function closeEditor() {
$("#editor").animate({ width: 985, height: 1 }, 1500, function () {
$("#editor").hide();
$("#editor textarea").hide();
});
}
function setedit() {
$.ajax({
type: "POST",
url: "engine.php",
data: "title=" + $('#editorTitle').attr('value') + "&text=" + $('#editorText').html(),
beforeSend: function () {
$('#mainField').html('<img src="data/images/loader.gif" alt="Loading...">');
},
success: function (msg) {
alert(msg);
closeEditor();
search();
}
});
}
function search() {
$('#title').val($('#search').val());
$.get('engine.php?search=' + $('#search').val(), function (data) {
$('#mainField').html(data);
});
$.get('engine.php?raw=true&search=' + $('#search').val(), function (data2) {
$('#editorText').html(data2);
});
$.get('engine.php?title=true&search=' + $('#search').val(), function (data2) {
$('#h1').html(data2); // Row 152
$('#editorTitle').html(data2);
});
}
$(document).ready(function () {
$("#ready").html('Document ready at ' + event.timeStamp);
});
Mais qu'est-ce qui ne va pas?!?!
Vous devriez appeler les événements une fois le document prêt , comme ceci:
$(document).ready(function () {
// Your code
});
En effet, vous essayez de manipuler des éléments avant qu'ils ne soient restitués par le navigateur.
Donc, dans le cas où vous avez posté cela devrait ressembler à ceci
$(document).ready(function () {
var editorTitle = $('#editorTitle').val();
var editorText = $('#editorText').html();
});
J'espère que ça aide.
Astuces: enregistrez toujours votre objet jQuery dans une variable pour une utilisation ultérieure. Seul le code devant réellement s'exécuter après le chargement du document doit être inséré dans la fonction ready ().
se pourrait-il que vous ayez oublié de le charger dans la fonction de préparation de document?
$(document).ready(function () {
//your jQuery function
});
C'est stupide, mais pour référence future. J'ai mis tout mon code dans:
$(document).ready(function () {
//your jQuery function
});
Mais cela ne fonctionnait toujours pas et renvoyait la valeur undefined
. Je vérifie mon HTML DOM
<input id="username" placeholder="Username"></input>
et j’ai réalisé que jQuery ne me référait pas correctement:
var user_name = $('#user_name').val();
Le rendant:
var user_name = $('#username').val();
résolu mon problème.
Il est donc toujours préférable de vérifier votre code précédent.
essayez: $('#editorTitle').attr('value')
?
Je me suis récemment retrouvé moi-même hier sur un projet sur lequel je travaillais. Je suis mon cas spécifique, ce n'est pas exactement ce que l'entrée a été nommée, mais comment l'ID a été nommé.
<input id="user_info[1][last_name]" ..... />
var last_name = $("#user_info[1][last_name]").val() // returned undefined
Supprimer les crochets a résolu le problème:
<input id="user_info1_last_name" ..... />
var last_name = $("#user_info1_last_name").val() // returned "MyLastNameValue"
Quoi qu'il en soit, cela ne devrait pas poser de problème à certaines personnes, mais au cas où cela pourrait aider quelqu'un d'autre ... voilà!
:-)- A dessiné
vous pouvez oublier d'envelopper votre objet avec $()
var tableChild = children[i];
tableChild.val("my Value");// this is wrong
et le correct est
$(tableChild).val("my Value");// this is correct