2012-05-30 47 views
5

我工作this plugin,我得到了一個錯誤報告說,有一些問題了Android 2.3驗證。Android的 - 文本輸入,不具有自定義驗證插件

我下載了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手機就很難做到這一點。

回答

1

的是,目前的代碼?

我不能指向具體的事情,這將導致你的問題,但有時這些類型的錯誤是由怪癖在特定的瀏覽器版本造成的所以有一些事情我會檢查:

(1)我知道分號在Javascript中被認爲是「可選的」,但我已經看到古怪的行爲是一些瀏覽器(特別是移動的 - 這是從經驗中學到的),如果你不包括它們的話。我會在每次發言後添加它們。

(2)我看你是指這裏的過濾器變量:

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

你的意思是...... userFilters或過濾器這裏沒有顯示一個全局變量?

(3)這個變量聲明:

$input = input.input, 

你真的意味着調用變量$輸入?它不在任何地方使用。

(4)當您使用& &和||在一起我會明確指出通過括號分組:

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

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

希望這會有所幫助。

+0

** 1:**我嘗試過,但沒有什麼區別。儘管我把所有的東西都變成了一個文件,所以我懷疑這是問題所在。 ** 2:**'過濾器'不是全球性的,但它在更高的範圍內。我不認爲問題在這裏。 ** 3:**'$ input'是本地的,這裏沒有衝突。 ** 4:**雖然問題可能在這裏,但我試圖重組爲更傳統的方式,但問題仍然存在......看起來這個bug很難趕上......我想這可能是Android瀏覽器的錯誤,而不是我的實際代碼。也許有一種解決方法...誰知道。不管怎麼說,還是要謝謝你。 +1 – elclanrs