我的html表單上的輸入有問題。確實,我正在將這個輸入的twitter名稱放入一個Ajax函數中,該函數通過twitter從api中調用了推文。 由於我有一個setInterval函數來檢查更新,輸入一次又一次地傳遞給函數來獲取推文。爲什麼我的函數會繼續從我的輸入文本字段中讀取輸入內容?
問題是該函數似乎直接從文本輸入框中的內容讀取輸入。因此,如果用戶在沒有按下輸入按鈕或按下按鈕的情況下更改文本,該功能會不斷讀取該文本作爲輸入。因此,在輸入或按下按鈕提交後,最初輸入的輸入不是固定的。
這裏是HTML表單以輸入:
<div id="topdiv">Input Twitter ID: <input type="text" id="userid" onkeydown="if(event.keyCode===13) {document.getElementById('tweet-button').click();}">
<input type="submit" id="tweet-button" onclick="getStatusesX();" value="Get recent tweets">
<p id="tweetbox"></p>
</div>
這裏的功能是:
function getStatusesX() {
var userID = document.getElementById("userid").value;
getStatuses(userID);
var intervalstop = setInterval(function() {getStatuses(userID);}, 20000);
clearInterval(intervalstop);}
//Create a cross-browser XMLHttp Request object
function getXMLHttp() {
var xmlhttp;
if (window.ActiveXObject) {
XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
XMLHttp = new XMLHttpRequest();
} else {
alert("Your browser does not support XMLHTTP!");
}
return XMLHttp;
}
//function that searches for the tweets via php
function getStatuses(userID){
XMLHttp1 = getXMLHttp();
//ajax call to a php file that will extract the tweets
XMLHttp1.open('GET', 'TwitterGlimpsePHP.php?userid='userID, true);
// Process the data when the ajax object changes its state
XMLHttp1.onreadystatechange = function() {
if(XMLHttp1.readyState == 4) {
if(XMLHttp1.status ==200) { //no problem has been detected
document.getElementById("tweetbox").innerHTML=XMLHttp1.responseText;
}
}
}
XMLHttp1.send(null);
}
我想作爲文本按下ENTER後應採取的輸入。我曾嘗試將其分配給變量,但無法解決爲什麼它始終從輸入字段進行讀取。任何幫助讚賞。
難道是因爲你正在爲getStatuses設置一個間隔調用,因此每次調用時都會重新執行代碼,因此每次都從輸入框中獲取文本。 – 2013-04-11 20:56:00
您可以禁用輸入或其他...按照您的功能方式,您只需點擊一次即可調用它n次 – Hackerman 2013-04-11 20:57:17
因此,每次用戶單擊輸入或提交查詢時,它都會增加間隔?您應該在getStatusesX函數中將其指定爲var和clearInterval(var) – 2013-04-11 21:00:39