[英]check to see if dijit.form.ValidationTextBox has foucs in a validator
我想為dijit.form.ValidationTextBox編寫一個自定義的valadiator。 不幸的是,dijit.form.ValidationTextBox.validator被調用每種類型的ontype事件發生。 為了解決這個問題,文檔建議:
這里有一個小問題:這個驗證器將被稱為onType,這意味着它將在每個鍵擊中向后端發送請求。 如果您不希望這種情況發生,您可能希望在開頭添加另一個檢查,以便在驗證文本框處於焦點時始終返回true
但是,沒有提到如何檢查文本框是否具有焦點。
有什么建議嗎?
在您提到的文檔中(在http://dojotoolkit.org/reference-guide/dijit/form/ValidationTextBox-tricks.html#dijit-form-validationtextbox-tricks中找到),他們提到了創建自定義驗證功能。 嘗試將以下檢查添加到函數的開頭:
dijit.byId("validationTextBoxNodeId").validator = function (value, constraints) {
if(document.activeElement.id == "validationTextBoxNodeId") return true; //don't check while typing
// Check that email has not been used yet.
if (some-checks) {
return true;
} else {
return false;
}
}
或者,如果您沒有將“validationTextBoxNodeId”等手動ID分配給驗證文本框,並以編程方式創建所有內容(根據我的經驗,這是更可能的情況):
new dijit.form.ValidationTextBox({
name:"email",
//insert other properties like value, required or invalidMessage here
validator: function() {
if(this.id == document.activeElement.id) return true; //don't check while typing
//real checks go here
if (some-checks) {
return true;
} else {
return false;
}
}
});
請注意,您不需要顯式引用框的id,因為驗證功能在其范圍內工作。 如果需要,您可以使用dojo.hitch()在第一個示例中完成相同的操作。
另請注意,這僅適用於目標瀏覽器支持document.activeElement( 哪些瀏覽器支持document.activeElement? )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.