2013-03-18 51 views
1

所以我有一個文本框(的onsubmit沒有形式

<input type="text"/> 

),我想運行一個功能,當用戶按下輸入/提交它。

現在,onSubmit看起來是最好的解決方案。遺憾的是,這需要一個表單(據我所知),並且該表單在我提交時重新加載頁面。它增加了一些我不喜歡的額外代碼。 我也嘗試過onKeyPress,但是這對每次用戶鍵入內容都有反應(請參閱我的上一個問題)。我嘗試過在函數本身中尋找'enter'-key,但那並沒有奏效。每當有人在現場輸入某些東西時,我都不想運行該功能。

所以,總結一下:我想在用戶提交一個文本框時運行一個函數。我該怎麼做呢?有沒有一種方法可以在不使用表單的情況下使用'onSubmit'函數? 當我評論某些內容時,像Facebook這樣的頁面會做什麼?

我實際上正在嘗試做一個Facebook評論功能。這是我到目前爲止的代碼:

var facebook_footer = '<button onClick="fbLike(\''+post_id+'\')"> Like </button> <form onSubmit="fbComment(\''+post_id+'\')"><input type="text" id="' + post_id + '" /></form>'; 

function fbComment(post_id) { 
    var message = document.getElementById(post_id).value; 
    console.log('Trying to comment on: ' + post_id); 

    FB.api('/'+ post_id +'/comments?message=' + message, 'post', function(response) { 
    if (!response || response.error) { 
     alert('Error occured. ID: ' + post_id); 
    } else { 
     alert('Great! It worked. ID: ' + post_id); 
    } 
    }); 
} 

也許你對FBapi一定的瞭解,並瞭解這裏的標準程序?

無論如何,在此先感謝您的答案。

+1

1.表格不需要重新加載頁面(如果返回了OnSubmit FALSE) 2.您不需要提交,你可以我們一個 3.如果你想在不使用表單的情況下使用表單元素,我會建議使用document.getElementById(」NAME「)來確定你的不同輸入。 – 2013-03-18 22:05:42

+0

1.好的,我首先嚐試使用表單。發生了什麼事是該功能甚至沒有時間運行。當我按下Enter鍵並添加'?'時,頁面剛剛重新加載之後的網址。 2.我不想要一個按鈕,我只想讓用戶按下回車鍵。 3.我使用document.getElementById('id')來獲取文本字段的內容。但問題是當用戶按下'enter'時運行該功能。 – Aleksander 2013-03-19 16:38:56

+0

回車鍵是ASCII 13,所以這樣的事情應該工作:onkeypress =「return myFuntion(event)」funtion myFunction(e){if(e.keyCode == 13){return true;} else {return false;}} – 2013-03-19 16:46:21

回答

4

最好的辦法是有一個形式,並使用onSubmit。爲了防止表單自己實際提交(並使用自己的JS函數),該函數只需return false

+0

我該如何從函數返回false?當我嘗試使用表單時發生的事情是,只要按下回車鍵,頁面就會重新加載。該功能甚至沒有時間運行...並添加了一個'?'到URL的末尾。如何防止表單更新頁面? – Aleksander 2013-03-19 16:40:14

+0

要麼使用jQuery事件處理程序,要麼只需創建一個函數,並通過類似於

>'的函數調用從''標記中調用它。然後,在那個函數中,只需'返回false;',表單根本不會提交。 – hexblot 2013-03-19 16:45:42

+0

我已經包含了在我的問題中運行的功能。我會在哪裏把回報假?如果我看看控制檯,我可以看到我得到:'嘗試評論:xxxxxx',但是頁面重新加載並且最後一位(實際上是評論)未運行。 – Aleksander 2013-03-19 17:58:42

0

根據應用,onBlur或onChange。當字段的值改變時onChange觸發。 onBlur在場地失去焦點時發射,無論價值如何。

+0

當控件失去焦點**並且值已更改(某些瀏覽器中的單選按鈕和複選框除外)時,調度change事件**。 – RobG 2013-03-18 22:26:29

+0

我不知道這將如何工作......因爲我有一個文本框,並且我想要一個函數在用戶「提交」時按下鍵來運行。 – Aleksander 2013-03-19 16:40:52

+0

*「onChange在字段值改變時觸發」* - 否,請參閱@RobG的註釋。改用onInput。 – Booligoosh 2017-10-16 11:08:23