2014-09-04 46 views
0

我有一個Javascript問題,我無法找到答案。希望您能夠幫助我。動態函數調用只有在提供alert()時纔有效

我已經這個元件稱爲「scanValue」,其具有的onfocus和的onblur觸發:

<input name="scanValue" class="searchFormText" style="width: 220px; font-size: 22px;" onfocus="onFocusElement(this)" onblur="onBlurElement(this)" type="text" maxLength="20" value="510210006823414"/> 

如果我標籤字段外的所述onBlurElement()函數按預期稱爲:

function onBlurElement(object) { 
     alert('onBlurElement: Start blur on ' + object.name + ' (old val = ' + prevObjectVal + ', new val = ' + object.value + ')'); 

     if (object.value !== prevObjectVal) { 
      check(object); 

      var checkFcn = 'check' + object.name; 
      var fcnParms = [object.value]; 
      var fcn = window[checkFcn]; 

      alert('onBlurElement: check if ' + checkFcn + ' is a function: ' + (typeof fcn)); 
      if (typeof fcn == 'function') { 
       alert('fcnParms length = ' + fcnParms.length + '. ToString= ' + fcnParms.toString()); 
       alert('fcnParms[0] length = ' + fcnParms[0].length + '. ToString= ' + fcnParms.toString()); 
       fcn.apply(fcn, fcnParms); 
      } 
     } 
    } 

現在這個動態函數調用(fcn.apply())應該調用函數'checkscanValue(val)',但沒有任何反應。除了向這個函數添加alert(),或者如果我啓動IE標準開發人員工具。換句話說,如果我跟蹤或調試checkscanValue()函數一切正常,否則什麼也不做。我嘗試了幾個不同的東西,但似乎沒有任何工作。我懷疑這可能與用方法發佈提交的表單有任何關係,但也許有人可以幫助我。

代碼爲checkscanValue()函數:

function checkscanValue(val) { 
     console.info('checkscanValue: start function'); 
     document.forms[0].airNumber.value = 'test'; 

     // Check if the scanned value is valid for submitting the form 
     if (val[0].length === 15) { 
      document.forms[0].submit(); 
     } 
    } 
+0

airNumber字段也在窗體上,並且值不會更改。 – Arduin 2014-09-04 08:02:53

回答

0

一切工作,除了要傳遞到checkscanvalue功能「VAL」參數精細是字符串,用戶輸入的或者是有默認。

因此val [0]返回長度不能爲15的字符串的第一個字符,因此檢查失敗並沒有任何反應。

希望它有幫助!

+0

謝謝,你說的是正確的。問題在於我的代碼在嘗試幾乎所有我能想到的事情後都發生了變化。原始代碼沒有數組索引,並且不起作用。此外,表單域airNumber的更新也不起作用。 – Arduin 2014-09-04 08:45:01

+0

我用一個文本類型的輸入和值更新正常。讓我知道您在表單中使用的輸入字段。 – 2014-09-04 08:50:56

+0

Arduin 2014-09-04 09:07:08

0

這似乎回答我的問題:'console' is undefined error for Internet Explorer

我一直在使用功能console.info()如果IE瀏覽器的控制檯窗口中從來不開這是不確定的。這導致該功能停止。如果我用alert()替換它,它顯然工作,如果我打開IE的控制檯,則定義了console.info函數。

相關問題