2017-03-17 38 views
-1

我應該如何編寫addMethod如果我想要錯誤信息 - 「foo應介於0和25之間」。如何訪問jQuery Validator的addMethod消息參數中的「JavaScript對象」?

jQuery.validator.addMethod("myRule", function (value, element, params) { 
    var inputNumber = $(element).val(); 

    if ((inputNumber >= params.min) && (inputNumber <= params.max)) { 
      returnValue = true; 
     } else { 
      returnValue = false; 
     } 
}, "{0} should be between: {1} and {2}!"); 

$("#input").rules("add", { myRule: { data: "foo", min: 0, max: 25 } }); 

我得到一個JavaScript對象具有多個值,並希望從它們訪問一些值。上面只是一個例子來解釋(範圍規則可以用於上述邏輯,但我有其他一些自定義規則具有其他業務邏輯)。 有一些現存的問題解釋相同,但與正常的數組。但是我想要它的JavaScript對象,如示例中所示。

+0

有已經建成'range'驗證它確實你需要:https://jqueryvalidation.org/range-method/ –

+0

代碼更復雜的比我在這裏解釋。所以我只想知道如何訪問消息參數中的最小值和最大值。我沒有陣列。 – Lucifer

回答

-1

以下更改已爲我制定。我用函數作爲最後一個參數而不是直接的字符串消息。

jQuery.validator.addMethod("myRule", function (value, element, params) { 
    var inputNumber = $(element).val(); 
    if ((inputNumber >= params.min) && (inputNumber <= params.max)) { 
     returnValue = true; 
    } else { 
     returnValue = false; 
    } 
    },function(params, element) { 
     return params.data + " should be between " + params.min + "and " + params.max + "."; 
    }); 
+0

你用'returnValue'做什麼?您必須在此方法中實際返回'true'或'false'。而'$(element).val()'完全等於'value',所以使用'.val()'來提取這個是毫無意義的。這裏非常草率的做法。 – Sparky

+0

@Sparky你有沒有正確的閱讀我的問題?我在那裏明確提到,上面的代碼只是一個例子。我的問題是關於addMethod()的第三個參數,而不是我在第二個參數中完成的。無論如何感謝您的建議。但請在評論任何事情之前採取正確閱讀的習慣。 – Lucifer

相關問題