2013-05-29 43 views
0

的Javascript:的JavaScript的setInterval()與文本框

 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不會工作,因爲該段被改爲 「輸入一些東西!」,但是當我在輸入的東西文本框的值不會更改。

回答

3

返回值val()是一個純字符串。它不是實時更新的。

每次調用coolInput函數時,需要在jQuery包裝器對象上調用val()

var inputHeader = $("#inputHeader"); 
function coolInput() { 
    var header = inputHeader.val(); 
+0

但是當'coolInput'運行時,它符號'val()' – OPatel

+0

@ user1185220 - 不能得到你正在測試的'header'的值。 – Quentin

+0

啊,好吧,我明白了。謝謝! – OPatel

0

你並不需要指定keyup事件每隔1毫秒。這就是你的腳本所做的。

你可以改變這一點:

var header = $("#inputHeader"); 

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

setInterval(coolInput, 1); 
1

爲什麼要應用的keyup事件處理程序每​​隔1毫秒。只需定義一次keyup事件。

Sample

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

裏面的KEYUP處理功能,您可以輕鬆地測試值。
如果這對您無濟於事,請告訴我,我會從您的帖子中刪除帖子。

編輯:剛纔注意到第二個.keyup()正好在處理函數的後面。你爲什麼把它放在那裏?