1

我有一个表单,并且想要根据表单的输入文本字段是空的还是输入了文本来禁用/启用它的提交按钮。

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

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

我的问题是:

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

编辑:仅供参考,jQuery 验证插件重新测试表单的有效性。

4

1 回答 1

1

在回答你的问题...

  1. 在使用javascript输入文本之前可以拦截keydown或keypress事件
  2. 将函数绑定到 keydown 或 keypress 事件后,您可以返回 false。这将阻止输入文本。

使用 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 ”事件处理程序来允许首先发送文本。看我的例子:在jsbin上

于 2009-11-09T19:27:05.833 回答