【问题标题】:Jquery if empty loop in live previewJquery if 实时预览中的空循环
【发布时间】:2015-05-11 05:54:41
【问题描述】:

我有一个正在运行的实时预览脚本。但是现在我希望在表单字段中有输入时仅显示电话和传真字段。但我想空语句肯定有问题。有没有人有解决这个问题的想法?非常感谢!

$(document).ready(function() {
  updatePreview();

  $('#live-preview-form input, #live-preview-form textarea #live-preview-form select').bind('blur keyup',updatePreview);
});

function updatePreview(){
  var   contact             = $('#lp-contact'),
        company_name    = $('#lp-company_name'),
        company_extra   = $('#lp-company_extra'),
        adress          = $('#lp-adress'),
        country_code    = $('#lp-country_code'),        
        zip                 = $('#lp-zip'),     
        city            = $('#lp-city'),        
        phone           = $('#lp-phone'),
        fax                 = $('#lp-fax'),
        url                 = $('#lp-url'),
        mail            = $('#lp-mail');


        contact.text($('#contact').val());
        company_name.text($('#company_name').val());
        company_name.html($('#lp-company_name').html().replace(/\n/g,'<br />'));
        company_extra.text($('#company_extra').val());
        adress.text($('#adress').val());
        country_code.text($('#country_code').val() + '-' );
        zip.text($('#zip').val());
        city.text($('#city').val());
        if(! $('#phone')){phone.text('T ' + $('#phone').val())};
        if(! $('#fax')){fax.text('F ' + $('#fax').val())};
        url.text($('#url').val());
        mail.text($('#mail').val());
}

JS Fiddle

JS Fiddle Update #1

经过大量尝试和研究,我想,也许它适用于这段代码:但它没有。

 if (phone.text($('#phone').val().length) != 0){
        phone.text('T ' + $('#phone').val());
    };

【问题讨论】:

  • 请张贴小提琴。

标签: javascript jquery loops


【解决方案1】:

这个条件:

if (!$('#phone')) {
    phone.text('T ' + $('#phone').val())
};

应该是

if (!$('#phone').length) {
    phone.text('T ' + $('#phone').val())
};

问题是$('#phone') 是一个 jQuery 实例对象,它始终是一个真值。该对象是 HTML 元素的array-like collection。所以检查元素是否在页面上的正确方法是检查这个集合的长度。基本上可以用这个简单的sn-p来演示:

if ({length: 0}) {
    alert('One');
}

if ({length: 0}.length) {
    alert('Two');
} 

【讨论】:

  • 非常感谢您的回答和很好的解释。糟糕的是,它在我的脚本中不起作用。我用你的 2. 代码 sn-p 更新了小提琴。什么都没有改变。有什么想法吗?
  • 不,但也许我是描述我的问题的问题:-) 只有在字段中有输入时,字母 F 和 T 才应该可见。
  • 我还在努力。我编辑了另一个想法,但没有成功。您可以在问题中看到编辑。
  • 好的,我得到了你想要实现的目标。看看这个演示:jsfiddle.net/8j4ykkgu/3
  • 这正是我一直在寻找的。凉爽的。非常感谢你!你能帮我解释一下它是如何工作的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 2021-04-13
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多