【问题标题】:Is there a way to check a form when it actually changes?有没有办法在表单实际更改时检查它?
【发布时间】:2012-12-23 17:19:11
【问题描述】:

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

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

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

我认为不需要代码,但如果需要,我可以添加我的意思的示例代码。

【问题讨论】:

  • 所以我会在每次按键后运行一个脚本?有趣的想法。如果你写一个正式的回复,我可以接受。

标签: javascript html forms onchange


【解决方案1】:

jQuery 拥有强大的功能,可以满足你的需求,但如果你只需要运行一个简单的脚本,你可以使用 onkeydown 和 onkeypress 等函数。

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

来源:

W3 Schools - OnKeyPress

W3 Schools - OnKeyDown

【讨论】:

    【解决方案2】:

    如果我自己这样做,我会在表单的输入上监听 change 事件。我个人认为这对你来说使用 jQuery 会更容易。

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

    【讨论】:

    • 不要忘记选择列表,它们不会呈现为输入标签!
    【解决方案3】:

    如果您想确保在表单中任何类型的输入发生变化时捕捉到(即复选框、选择列表、单选按钮等,而不仅仅是文本),那么您可以使用我放在一起的以下 sn-p(假设您'正在使用 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();">
    

    【讨论】:

    • 谢谢!不幸的是,我无法在我当前的项目中使用 jQuery,但这绝对有帮助! +1。
    猜你喜欢
    • 2020-08-29
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多