jQuery val не определен? - PullRequest
       5

jQuery val не определен?

13 голосов
/ 15 февраля 2011

У меня есть этот код:

<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 ]

22 голосов
/ 15 февраля 2011

Вы, вероятно, включили свой JavaScript до HTML: пример .

Вы должны либо выполнить свой JavaScript, когда окно загружается (илилучше, когда DOM полностью загружен), или вы должны включить ваш JavaScript после вашего HTML: пример .

8 голосов
/ 15 февраля 2011

Вы должны вызывать события после того, как документ готов , например:

$(document).ready(function () {
  // Your code
});

Это потому, что вы пытаетесь манипулировать элементами до того, как они будут отображены браузером.

Итак, в случае, если вы разместили сообщение, оно должно выглядеть примерно так:

$(document).ready(function () {
  var editorTitle = $('#editorTitle').val();
  var editorText = $('#editorText').html();
});

Надеюсь, это поможет.

Советы: всегда сохраняйте объект jQuery в переменнойдля последующего использования и только код, который действительно должен быть запущен после загрузки документа, должен идти внутри функции ready ().

3 голосов
/ 15 февраля 2011

Может быть, вы забыли загрузить его в функцию готовности документа?

$(document).ready(function () {

    //your jQuery function
});
2 голосов
/ 22 марта 2017

Это глупо, но для дальнейшего использования.Я поместил весь свой код в:

$(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();

решил мою проблему.

Так что всегда лучше проверить свой предыдущий код.

0 голосов
/ 04 октября 2018

Вчера я сам столкнулся с этим в проекте, над которым я работал.Я являюсь моим конкретным случаем, это было не совсем то, что было названо для ввода, но как идентификатор был назван.

<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"

В любом случае, возможно, для некоторых это не составляет труда, но в случае, если это поможет кому-то еще ... вот, пожалуйста!

:-) - Дрю

0 голосов
/ 18 сентября 2016

Вы можете забыть обернуть свой объект с помощью $()

  var tableChild = children[i];
  tableChild.val("my Value");// this is wrong 

, а правильным является

$(tableChild).val("my Value");// this is correct
0 голосов
/ 15 февраля 2011

попробуй: $('#editorTitle').attr('value')?

...