Onblur不开火

时间:2015-08-28 02:34:11

标签: javascript jquery html

情景:

我想触发函数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();
    }
  }

2 个答案:

答案 0 :(得分: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。)< / p>

您还需要关闭第一个if声明

答案 1 :(得分: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);
   }

这就是你想要的,我猜猜想