HTML文本输入事件

时间:2009-11-09 19:09:12

标签: html input events keypress textinput

我有一个表单,并且想要禁用/启用其提交按钮,具体取决于表单的输入文本字段是否为空或是否已输入文本。

我认为这意味着为输入文本字段'keydownkeypress事件设置事件处理程序:当它被触发时,此事件处理程序应测试输入文本字段是否包含文本,并启用或相应地禁用提交按钮。

change事件看起来应该比keydownkeypress事件更有用,除非在相关控件丢失焦点之前不会触发事件,并且有什么好处:因为用户只想输入内容然后点击提交按钮,我想要一个事件处理程序,它被输入的文本触发,而不仅仅是当控件失去焦点时。

我的问题是:

  • 在将相应的文字插入输入文字字段之前或之后,是否已触发keydown和/或keypress个事件?
  • keydown和/或keypress事件是否可取消(您可以取消它们以防止输入相应的文字)吗?

修改:仅供参考,jQuery validation plug-in重新测试表格的有效性。

1 个答案:

答案 0 :(得分:1)

回答你的问题......

  1. keydown或keypress事件可以 在输入文本之前被拦截 使用javascript
  2. 绑定后可以返回false 功能到keydown或keypress 事件。这将阻止文本 从输入。
  3. 使用jQuery的示例:

    $("#inputfield").live("keydown", function(){
        return false;
    });
    

    如果您想在表单提交上测试某些输入值,可以使用jQuery submit()来完成。

    $("#theform").submit(function() {
        var formval = $("#theinput").val();
        if(formval == "") { //or some better test
            alert("input value"); //or some other alert...
            return false;
        } else {
            return true;
        }
    });
    

    返回false将使点击无效以提交表单。

    修改 如果您在评论中说,您希望禁用表单提交,直到输入字段符合要求

    $("#inputfield").live("keyup", function(){
        if($("#inputfield").val() == "") {
            $('#button').attr("disabled", true); 
        } else {
            $('#button').attr("disabled", false); 
        }
    });
    

    您希望使用“keyup”事件处理程序来允许首先发送文本。看我的例子:on jsbin