簡體   English   中英

檢查dijit.form.ValidationTextBox是否在驗證器中有錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM