2012-08-31 63 views
0

我有一個表格:如何獲取文本框的值,而無需按下提交按鈕

private Class TestForm extends Form<TestString>{ 

    public TestForm(TestString testString){ 
    super("testForm", new CompoundPropertyModel<TestString>(testString)); 
    final TextField<String> test = new TextField<String>("test")); 
    add(test); 
    ... //submit button 
    } 

TestString類只包含一個領域:test

是否有可能通過推送提交按鈕而不是字符串的值?有行爲或別的什麼?

我試圖添加並在此行爲的內部稱爲方法text.getValue()testString.getTest()但沒有成功。

回答

0

如前所述,您可以使用AjaxFormComponentUpdatingBehaviour和使用的onchange事件(或OnChangeAjaxBehaviour),這並不當然意味着任何時候你的的onUpdate(AjaxRequestTarget目標)函數被調用的不一定是用戶最終意向輸入。例如:假設您輸入'test',您的更新函數將被調用4次,但只有最終調用是用戶希望提交的最後一個單詞。

我想提一提您的方案一個重要的事情是,你不能簡單地看一個的onblur事件,因爲(在你的例子)用戶很可能是唯一一次被模糊掉文本字段是,如果他們正試圖點擊提交按鈕,在這一點上有點遲到擔心AJAX,因爲它正在提交...

也許如果你提供更多的細節,爲什麼你需要的字符串的價值,而不推動提交按鈕,然後有人可以提出一個更好的主意(當然,這可能是onchange事件對你來說很好,在這種情況下很棒!)。然而,如果(以在黑暗中野生刺),你需要它的用戶提交表單之前驗證輸入,那麼你實際上可以在提交之後:

2

您必須以某種方式提交表格。您可以使用AjaxFormSubmitBehavior將setDefaultProcessing(false)的默認表單行爲設置爲false。 這樣做可以跳過表單驗證,並且可以使用text.getValue()讀取文本值。

+2

'AjaxFormComponentUpdatingBehaviour'是一個更好的選擇,因爲它只提交它所連接的組件的值。 – biziclop

相關問題