1

私は機能を持っています:

    validatorsString.replace(/([\w_$]+)\(([\w_$,]+)\)/g, (all, fn, args) ->
      args = args.split ','
      if typeof validatorsObject[fn] is 'function'
        res = validatorsObject[fn].apply validatorsObject, args
        if res == false
          formBox.addError obj, "Pole musi byc takie"
          return false
          #obj.css "background-color", "red"
    )

うまくいったら何とかしたい。上記の関数はバリデーター (1,3,10) を呼び出しており、すべてのバリデーターが true を返した場合に ajax を送信したいと考えています。これを行う方法 ?

4

2 に答える 2

2

バリデーターを実行し、ビューを別の関数で更新するロジックを維持すれば、将来的にはきれいに保つことができると思います。次に、次のように記述できます。

isValid = (validationString) ->
  re = /([\w_$]+)\(([\w_$,]+)\)/g
  while match = re.exec(validationString)
    [fn, args] = [match[1], match[2].split(',')]
    if _(validatorsObject[fn]).isFunction() and not validatorsObject[fn].apply validatorsObject, args
      return false
  true

unless isValid(validationString)
  formBox.addError obj, "Pole musi byc takie"

バリデーターのタイプをチェックするために underscore.js を使用しました。これはtypeof、コード内のようなチェックが Android 2.3 ストックブラウザーで失敗すると思われるためです。考えるためのいくつかの食べ物。

于 2013-06-17T20:54:46.123 に答える