2012-12-23 171 views
2

我意識到存在用於檢測的形式的變化和執行特定功能的JavaScript目的的onchange事件屬性。但是,這要求用戶點擊表單字段外部,使其與onblur非常相似。有沒有辦法在實際更改時檢查表單?

是否有實際執行功能的方式,當一個形式的變化,而不必等待用戶的表單以外的點擊?

我知道你可以使用JavaScript超時檢查形式每隔幾毫秒,但我寧願一個解決方案,而他們。另外,我不僅限於形式元素,我很好用contenteditabledivs

我不認爲一個代碼是必要的,但我可以加我的意思,如果需要一個示例代碼。

+4

的onkeydown,onkeypress事件 – PitaJ

+0

所以我每次按鍵後運行的腳本?有趣的想法。如果你寫出正式答覆,我可以接受。 –

回答

1

jQuery有,可提供你以後強大的功能,但如果你只需要運行一個簡單的腳本,您可以使用這些功能的onkeydown和onkeypress事件。

<input type="text" onkeydown="myFunction()"> 

來源:

W3 Schools - OnKeyPress

W3 Schools - OnKeyDown

1

如果我這個做我自己,我會聽取他們對錶單的輸入更改事件。我個人認爲這對你使用jQuery會更容易。

$('form input, form select').change(function() { 
    console.log('form has been changed'); 
}); 
+0

不要忘記選擇列表,它們不會呈現爲輸入標籤! –

+0

注意了!更新了我的回答 – Undefined

1

如果你想確保你抓住的時候在你的形式變化的任何類型的輸入(即複選框,選擇列表,單選按鈕等,而不僅僅是文字),那麼你可以使用下面的代碼片段我放在一起(假設你正在使用jQuery)

$('form input[type=text]').keyup(formUpdated); 

$('form input[type!=text], form select').change(formUpdated); 

function formUpdated() { 
    alert('input changed'); 
} 

你可以看到它在行動here

這是所有消除這種需要的只是一個很好的方式:

<input type="text" onkeyup="formUpdated();"> 

<select onchange="formUpdated();"> 
</select> 

<input type="radio" onchange="formUpdated();"> 

<input type="checkbox" onchange="formUpdated();"> 
+0

謝謝!不幸的是,我無法爲當前項目使用jQuery,但這絕對有幫助! +1。 –

相關問題