5

私はこのプラグインに取り組んでおり、Android 2.3 に問題があるというバグ レポートを受け取りました。

Android SDK をダウンロードし、2.3 でプラグインを試してみましたが、テキスト入力が検証されず、エラーが表示されないかバグが発生するようです。他の入力は正常に検証されます。Android 4.0以降で試してみましたが、うまく機能しているようです。問題がどこから来ているのかわからず、これらをデバッグするための実際の Android フォンを持っていないため、どこから始めればよいかわかりません。また、エミュレーターには開発ツールなどが不足しています。

ここにコード ダンプを投稿するのが役立つとは思えませんが、これは にあるvalidate()方法js/idealforms.jsです。「バグ」は、CSS に関連していない限り、そのファイルのここまたは別の場所から発生しているに違いありませんが、私はそうは思いません。

/** Validates an input
 * @memberOf Actions
 * @param {object} input Object that contains the jQuery input object [input.input]
 * and the user options of that input [input.userOptions]
 * @param {string} value The value of the given input
 * @returns {object} Returns [isValid] plus [error] if it fails
 */
validate: function (input, value) {

  var isValid = true,
      error = '',
      $input = input.input,
      userOptions = input.userOptions,
      userFilters = userOptions.filters

  if (userFilters) {

    // Required
    if (!value && /required/.test(userFilters)) {
      error = (
        userOptions.errors && userOptions.errors.required
          ? userOptions.errors.required
          : 'This field is required.'
      )
      isValid = false
    }

    // All other filters
    if (value) {
      userFilters = userFilters.split(/\s/)
      for (var i = 0, len = userFilters.length; i < len; i++) {
        var uf = userFilters[i],
            theFilter = typeof Filters[uf] === 'undefined' ? '' : Filters[uf],
            isFunction = typeof theFilter.regex === 'function',
            isRegex = theFilter.regex instanceof RegExp
        if (
          theFilter && (
            isFunction && !theFilter.regex(input, value) ||
            isRegex && !theFilter.regex.test(value)
          )
        ) {
          isValid = false
          error = (
            userOptions.errors && userOptions.errors[uf] ||
            theFilter.error
          )
          break
        }
      }
    }

  }

  return {
    isValid: isValid,
    error: error
  }
}

誰でも私を助けてもらえますか?このプラグインをできるだけ多くのプラットフォームで動作させたいと考えていますが、実際の Android フォンがないと実現は困難です。

4

1 に答える 1

1

それが現在のコードですか?

あなたの問題を引き起こす特定のものを指摘することはできませんが、これらのタイプのエラーは特定のブラウザバージョンの癖によって引き起こされることがあるため、いくつか確認することがあります。

(1)Javascriptではセミコロンが「オプション」であると思われますが、セミコロンを含めない場合、一部のブラウザー(特にモバイルブラウザー-これは経験から学ばれます)で奇抜な動作が見られます。すべてのステートメントの後にそれらを追加します。

(2) ここで Filters 変数を参照しているようです。

        theFilter = typeof Filters[uf] === 'undefined' ? '' : Filters[uf],

userFilters のことですか...それとも Filters はここに表示されていないグローバル変数ですか?

(3) この変数宣言:

$input = input.input,

本当に変数 $input を呼び出すつもりですか? どこにも使われていません。

(4) && と || を使用する場合 一緒に、括弧を使用してグループ化を明示的に示します。

if (
      theFilter && (
        isFunction && !theFilter.regex(input, value) ||
        isRegex && !theFilter.regex.test(value)
      )
    )

  error = (
    userOptions.errors && userOptions.errors[uf] ||
    theFilter.error
  )

お役に立てれば。

于 2012-06-11T00:08:23.353 に答える