我有一個表單,用戶可以在幾個文本框中輸入信息。GWT捕獲文本框加載事件
文本框創建像這樣 -
GroupSection courseNumber = new GroupSection(getH4Title(""));
courseNumber.addStyleName(LUUIConstants.STYLE_SECTION);
courseNumber.addStyleName(LUUIConstants.STYLE_SECTION_DIVIDER);
// KSTextBox extends TextBox incidentally
// I've added some custom functionality in my version of this class
KSTextBox subjectCodeTextBox = new KSTextBox();
KSTextBox courseNumberTextBox = new KSTextBox();
.
.
.
addField(courseNumber,
COURSE + "/" + SUBJECT_AREA,
generateMessageInfo(LUUIConstants.SUBJECT_CODE_LABEL_KEY),
subjectCodeTextBox);
addField(courseNumber,
COURSE + "/" + COURSE_NUMBER_SUFFIX,
generateMessageInfo(LUUIConstants.COURSE_NUMBER_LABEL_KEY),
courseNumberTextBox);
.
.
.
courseNumber.addSection(generateCrossListed_Ver_Joint_Section());
return courseNumber;
這裏是什麼樣子呈現:
對這些文本框是位於我在應用程序中重新使用這同一個頁面不同的場景;然而,對於一個特定的場景,我需要讓它們成爲只讀的。
我發現這種情況的方式是檢查頁面的標題。如果頁面上有關鍵字「修改」 - 我不希望用戶能夠更改這些文本框中正在自動填充的值。
我已經幾乎實現此實現這一點 -
subjectCodeTextBox.addBlurHandler(new BlurHandler() {
@Override
public void onBlur(BlurEvent blurEvent) {
NodeList<Element> elements = Document.get().getElementsByTagName("div");
for (int i = 0; i < elements.getLength(); i++) {
Element elem = elements.getItem(i);
String innerHTML = elem.getInnerHTML();
if (innerHTML.contains("Modify")) {
subjectCodeTextBox.setReadOnly(true);
courseNumberTextBox.setReadOnly(true);
}
break;
}
}
});
courseNumberTextBox.addBlurHandler(new BlurHandler() {
@Override
public void onBlur(BlurEvent blurEvent) {
NodeList<Element> elements = Document.get().getElementsByTagName("div");
for (int i = 0; i < elements.getLength(); i++) {
Element elem = elements.getItem(i);
String innerHTML = elem.getInnerHTML();
if (innerHTML.contains("Modify")) {
subjectCodeTextBox.setReadOnly(true);
courseNumberTextBox.setReadOnly(true);
}
break;
}
}
});
上面的代碼工作,但它只會火在用戶點擊了,然後這些2個一個文本框出來後。但到那時,他們可能已經改變了價值觀,並且不想那樣做 - 我希望這些框在頁面首次呈現時被禁用。
如何在頁面首次呈現給用戶時將這些文本框設置爲READONLY?
我認爲它與ONLOAD事件有關,但是如何正確設置它?
我必須錯過一些東西 - 你爲什麼要把它放在模糊處理程序中,而不是立即調用它,或者只要在頁面上實際添加了「修改」關鍵字就會調用它?你不能把它們設置爲只讀嗎? –
這是使用MVC和Spring的企業應用程序的一部分。 rootPanel存在於應用程序的其他地方。這個特定的類只返回一個小段(Section)。這個頁面在幾種情況下使用 - 修改,創建和退出。 Modify關鍵字被插入到另一個沒有引用這些文本框的部分中的完全不同的類中。它必須在這裏發生。 –