2015-05-11 14 views
6

Sto avendo uno script di anteprima dal vivo. Ma ora voglio che venga visualizzato solo il campo per telefono e fax, quando c'è un input nei campi del modulo. Ma immagino ci debba essere un problema con la dichiarazione vuota. Qualcuno ha un'idea per risolvere questo problema? Grazie mille!Jquery se loop vuoto nell'anteprima dal vivo

$(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

Dopo un sacco di cercare e di ricerca ho pensato, forse funziona con questo codice: ma non lo ha fatto.

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

Si prega di inviare un violino. – codyogden

risposta

6

Questo condizioni:

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

dovrebbe essere

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

Il fatto è che $('#phone') è un oggetto istanza jQuery che è sempre un valore truthy. Questo oggetto è un array-like collection degli elementi HTML. Il modo corretto per verificare se l'elemento si trova sulla pagina è controllare la lunghezza di questa raccolta. In sostanza, si può dimostrare con questo semplice frammento:

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

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

+0

grazie mille per la tua risposta e la tua ottima spiegazione. Male non funziona nel mio script. Ho aggiornato il violino con il tuo 2. frammento di codice. Niente può cambiare. Qualche idea? –

+0

non sarà http://jsfiddle.net/dfsq/8j4ykkgu/2/? – dfsq

+0

No, ma forse sono il problema con la descrizione del mio problema :-) Le lettere F e T dovrebbero essere visibili solo quando c'è un input nei campi. –

Problemi correlati