it-swarm-ru.tech

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

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

<input type="hidden" id="editorTitle" name="title" value="home">
<textarea name="text" id="editorText"></textarea>

Но когда я пишу $('#editorTitle').val() и $('#editorText').html(), $('#editorTitle').val() равен 'undefined', а $('#editorText').html() пуст?

Что случилось?


Правка:

Вот мой полный код:

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);
});

Но что не так?!?!

12
Thew

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

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

21
Aron Rotteveel

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

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

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

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

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

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

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

8
Jonathan

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

$(document).ready(function () {

    //your jQuery function
});
3
Marcel Colomb

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

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

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

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

2
fWd82

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

0
null

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

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

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

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

и правильный 

$(tableChild).val("my Value");// this is correct
0
Basheer AL-MOMANI