2015-08-28 39 views
0

的情景:的onblur不火

我想觸發功能checkDOMChange其中隱藏ul標籤是空) 一旦input注入並沒有重點,但目前,該功能並不被稱爲。這是一個fiddle

function checkDOMChange() { 
    if ($("div[id$='DoIQualify_financials'] div").hasClass("field-invalid")) { 
    if ($('.borrower1Salary_errors li').length == 0) { 
     jQuery("ul.borrower1Salary_errors").hide(); 
    } 
    if ($('.borrower2Salary_errors li').length == 0){ 
     jQuery("ul.borrower2Salary_errors").hide(); 
    } 
    } 
+1

有錯字錯誤'函數checkDOMChange(){'不關井。檢查控制檯 –

+1

您也有一個範圍問題。 – j08691

+2

看到它在這裏工作:http://jsfiddle.net/vcbcq1jz/10/ –

回答

0

您需要更改腳本中的腳本被解析時被定義,在運行時沒有field-invalid類,因爲DOM是空的(沒有HTML元素都被加載)。

爲此,請將函數分配給變量,如下所示。

checkDOMChange = function(){ 
     if ($("div[id$='DoIQualify_financials'] div").hasClass("field-invalid")) { 
      if ($('.borrower1Salary_errors li').length == 0) { 
       jQuery("ul.borrower1Salary_errors").hide(); 
      } 
      if ($('.borrower2Salary_errors li').length == 0) { 
       jQuery("ul.borrower2Salary_errors").hide(); 
      } 
     } 
    } 

這樣,函數在DOM加載所需元素之後被調用。有一個很好的解釋here它更詳細地解釋了區別。

您也可以選擇將函數放入window.onload事件中,該事件在執行腳本之前一直等待DOM加載。

第三種方法是在您的HTML標記關閉body之前放置腳本(瀏覽器從上至下讀取HTML,以便在讀取script標記之前加載DOM)。

您還需要關閉你的第一個if聲明

0
function checkDOMChange() { 
     if ($("div[id$='DoIQualify_financials'] div").hasClass("field-invalid")) { 
      if ($('.borrower1Salary_errors li').length == 0) { 
       jQuery("ul.borrower1Salary_errors").hide(); 
      } 
      if ($('.borrower2Salary_errors li').length == 0) { 
       jQuery("ul.borrower2Salary_errors").hide(); 
      } 
     } 
    } 
    $(document).ready(function() { 
     $(document).on('blur', '.inputbox', checkDOMChange); 
    } 

這是你想要什麼,我猜