jQuery val не определен?
у меня есть этот код:
<input type="hidden" id="editorTitle" name="title" value="home">
<textarea name="text" id="editorText"></textarea>
но когда я пишу $('#editorTitle').val()
и $('#editorText').html()
, $('#editorTitle').val()
это "неопределенным" и $('#editorText').html()
пусто?
что не так?
Edit:
вот мой полный код:
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);
});
но что случилось?!?!
7 ответов
вы должны вызвать события после того, как документ готов, например:
$(document).ready(function () {
// Your code
});
Это потому, что вы пытаетесь манипулировать элементами, прежде чем они будут отображаться браузером.
Итак, в случае, если вы разместили его, он должен выглядеть примерно так
$(document).ready(function () {
var editorTitle = $('#editorTitle').val();
var editorText = $('#editorText').html();
});
надеюсь, что это помогает.
советы: Всегда сохраняйте объект jQuery в переменной для последующего использования и только код, который действительно нужно запустить после загрузки документа следует зайти внутрь функции ready ().
может быть, вы забыли загрузить его в функцию готовности документа?
$(document).ready(function () {
//your jQuery function
});
Это глупо, но на будущее. Я поместил весь свой код в:
$(document).ready(function () {
//your jQuery function
});
но все равно он не работал, и он возвращался undefined
значение.
Я проверяю свой HTML DOM
<input id="username" placeholder="Username"></input>
и я понял, что неправильно ссылаюсь на это в jQuery:
var user_name = $('#user_name').val();
сделать это:
var user_name = $('#username').val();
решить мою проблему.
поэтому всегда лучше проверить свой предыдущий код.
вы можете забыть обернуть свой объект с $()
var tableChild = children[i];
tableChild.val("my Value");// this is wrong
и ccorrect один
$(tableChild).val("my Value");// this is correct
Я только что столкнулся с этим сам вчера на проекте, над которым я работал. Я мой конкретный случай, это было не совсем то, что вход был назван, но как идентификатор был назван.
<input id="user_info[1][last_name]" ..... />
var last_name = $("#user_info[1][last_name]").val() // returned undefined
удаление скобок решило проблему:
<input id="user_info1_last_name" ..... />
var last_name = $("#user_info1_last_name").val() // returned "MyLastNameValue"
во всяком случае, возможно, для некоторых людей это не проблема, но в случае, если это поможет кому-то еще... там вы идете!
:-) - Дрю!--5-->