2009-11-09 106 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