2012-12-23 75 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。 –

相关问题