2009-11-09 113 views
1

我有一个表单,并希望禁用/启用其提交按钮取决于表单的输入文本字段是否为空或已输入文本。HTML文本输入事件

我认为这意味着具有用于输入文本字段​​或keypress事件的事件处理程序:当它的发射,此事件处理程序应该测试输入文本字段是否包含文本,并启用或相应禁用提交按钮。

change事件看起来应该是比​​或keypress事件更加有用,但它不会触发,直至相关控件失去焦点,有什么好的是:由于用户希望只输入一些东西,然后点击提交按钮,我想要一个事件处理程序,它是由输入的文本触发的,而不仅仅是当控件失去焦点时。

我的问题是:

  • 是​​和/或keypress事件之前或相应的文本已经被插入到输入文本字段后解雇了吗?
  • 是​​和/或keypress事件可取消(您可以取消它们以防止输入相应的文本)?

编辑:仅供参考,jQuery validation plug-in重新测试构成关键了有效性。

回答

1

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

  1. 该keydown或按键事件可以 文本之前被截获输入 使用JavaScript
  2. 您可以将 功能结合的keydown后返回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 “事件处理程序允许首先发送文本。看到我的例子:on jsbin

+0

如果它们在输入文本之前被解雇,这不会使它们对我打算使用它们的目的无用(这是为了测试输入字段是否包含文本)?我可以使用其他什么机制(根据输入字段是否包含文本来启用/禁用提交按钮)? – ChrisW 2009-11-09 19:30:15

+0

您可以在onsubmit上进行测试,以检查输入字段中是否有内容。 – jjclarkson 2009-11-09 19:33:03

+0

这样做会比我想要的晚一点:在桌面应用程序中,至少通常会启用/禁用对话框的“确定”按钮,具体取决于它是否有效/可点击。相反,你可以让按钮始终可点击(以便始终可以调用onsubmit),但要在提交时进行检查(并且我想显示一条错误消息来表示需要一个字段)。我意识到这是在浏览器中执行它的常用/常用方式;我想知道技术(即可用事件的行为)是否支持其他用户界面。 – ChrisW 2009-11-09 19:38:16