0

Javascript:

        var header = $("#inputHeader").val();

    function coolInput() {
        if (header === "") {
            $("#displayHeader").text("Type Something!");
        }
        else if(header !== "") {
            $("#inputHeader").keyup(function () {
                var value = $(this).val();
                $("#displayHeader").text(value);
            }).keyup();
        }
    }

    setInterval(coolInput, 1);

HTML:

        <blockquote>
            <p id="displayHeader">jQuery no worky.</p>
            <small><?php echo $_SESSION['user']; ?></small>
        </blockquote>

我的 jQuery 确实可以工作,因为该段落被更改为“Type Something!”,但是当我在文本框中输入内容时,值不会改变。

4

3 回答 3

3

的返回值val()是一个纯字符串。它不是实时更新的。

val()每次调用函数时都需要调用jQuery 包装器对象coolInput

var inputHeader = $("#inputHeader");
function coolInput() {
    var header = inputHeader.val();
于 2013-05-29T08:12:12.157 回答
1

为什么您每 1 毫秒应用一次 keyup 事件处理程序。只需定义一次 keyup 事件。

Sample

$('#foo').on('keyup',function() {
    $bar.text($foo.val());
});

在 keyup 处理函数中,您可以轻松地测试该值。
如果这对您没有用,请告诉我,我将从您的帖子中删除该帖子。

编辑:刚刚注意到.keyup()带有处理函数的第二个就在后面。你为什么把它放在那里?

于 2013-05-29T08:21:06.577 回答
0

您不需要keyup每毫秒指定一次事件。这就是你的脚本所做的。

您可以使用以下方法更改:

var header = $("#inputHeader");

function coolInput() {
    if (header.val() === "") {
        $("#displayHeader").text("Type Something!");
    }
    else if(header.val() !== "") {
        $("#displayHeader").text(header.val());
    }
}

setInterval(coolInput, 1);
于 2013-05-29T08:13:46.040 回答