有没有办法在实际更改时检查表单?

时间:2012-12-23 17:19:12

标签: javascript html forms onchange

我意识到有一个onchange事件属性用于检测表单中的更改并执行某个javascript函数。但是,这需要用户在表单字段外单击,使其与onblur非常相似。

实际上有一种方法可以在表单更改时执行功能,而无需等待用户单击表单外部吗?

我知道你可以使用JavaScript超时每隔几毫秒检查一次表单,但我更喜欢没有它们的解决方案。另外,我不仅限于形式元素;我可以使用contenteditable divs

我不认为代码是必要的,但我可以根据需要添加我的意思的示例代码。

3 个答案:

答案 0 :(得分:1)

jQuery具有强大的功能,可以提供您所追求的功能,但如果您只需要运行一个简单的脚本,则可以使用onkeydown和onkeypress等功能。

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

来源:

W3 Schools - OnKeyPress

W3 Schools - OnKeyDown

答案 1 :(得分:1)

如果我自己这样做,我会听取表格输入的变化事件。就个人而言,我认为使用jQuery会更容易。

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

答案 2 :(得分: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();">