2013-02-15 5 views
6

Ho un modulo che può apparire su pagine diverse e, a seconda della circostanza, i campi non sono sempre richiesti.Al clic, nascondi div e rimuovi l'attributo richiesto

Ho il codice per nascondere il div, ma i campi di input non sono più necessari. Utilizzando l'attributo richiesto HTML5. Hai problemi a far funzionare il codice. Il codice è qui sotto:

$('#detailssame').click(function() { 
    if($(this).is(':checked')) { 
     $(\"#detailssamehide\").hide(); 
    } else { 
     $(\"#detailssamehide\").show(); 
    }    
}); 
$('.fullboxform input[type=text], .fullboxform select').each(function() { 
      $(this).removeAttr('required'); 
}); 

Tutto l'aiuto è molto apprezzato.

scopre il codice qui sopra funziona correttamente, ma la risposta alternativa disponibile utilizzando prop

risposta

6

tenta di utilizzare la funzione di prop() per impostare le proprietà HTML5.

$(function() { 
    $('#detailssame').click(function() { 
     var checked = $(this).is(':checked'); 
     if(checked) { 
      $("#detailssamehide").hide(); 
     } else { 
      $("#detailssamehide").show(); 
     }  
     $('.fullboxform input[type=text], .fullboxform select').each(function() { 
      $(this).prop('required', !checked); 
     }); 
    }); 
}); 

http://jsfiddle.net/ThsXU/

+0

In base alle mie letture, l'impostazione '' prop ('required', false) '' NON rimuove in modo affidabile lo stato richiesto in tutti i browser. DEVI usare '' removeAttr ('required') '' per risultati stabili in tutti i browser. – Jpsy

1

Rimozione dei backslash è stato sufficiente per me per eseguire il codice con effetto desiderato.

+0

Le barre erano lì come viene emesso da PHP. Hai ragione è stato eseguito. Ho controllato ulteriormente con la console e non mi ero reso conto di avere un paio di input richiesti che non erano testo. –

+0

Cerca di non generare js in PHP, poiché previene il caching ed è più facile da manomettere e più difficile da mantenere. Soprattutto, evitare di inserire il codice da una lingua nella stringa di un'altra lingua. –