我的html中有这样的东西:
<input type="text" data-validators="length(5,25);notNull();links(1);" />
函数:length,notNull和links在我的Validation类中。 我正在使用jQuery
获取这些函数 $(this).find('[data-validation]').each ->
validatorsString = $(this).attr "data-validation"
validatorsArray = validatorsString.split ";"
validatorsObject = new Validation($(this).val())
for v in validatorsArray
if typeof validatorsObject[v] == "function"
validatorsObject[v]
当我不使用参数(arg1,arg2)但现在我想使用参数时,这工作正常。 如何检查这些函数是否存在于类中并使用参数执行(没有限制,可以是1,5,10个参数)
答案 0 :(得分:3)
由于您无法使用参数作为字符串动态调用函数(除非您使用eval
),实现您希望的功能的最佳方法是您必须解析data-validation
信息:< / p>
给定此字符串:validatorsString="length(5,25);notNull();links(1);"
,您可以使用正则表达式将其解析为函数名和参数:
validatorsString.replace(/([\w_$]+)\(([\w_$,]+)\)/g, (all, fn, args) ->
args = args.split ',' if args
if typeof validatorsObject[fn] is 'function'
validatorsObject[fn].apply validatorsObject, args
)