2011-09-14 4 views
1

J'ai cette case à cocher:Marque champ en lecture seule - case - jQuery

<input type="checkbox" name="suspended" id="s" value="<?php echo $udata['suspended']; ?>" <?php echo $suspended; ?>> 

Et ce textarea:

<textarea name="suspendreason" id="sr" style="height:60px" class="field"><?php echo $udata['suspendreason']; ?></textarea> 

Ma question est, comment puis-je faire la textarea READONLY chaque fois que la case à cocher #s est non cochée?

Répondre

7

Avec votre exigence, quelque chose comme ceci:

$(document).ready(function(){ 
    if($('#s:checked').length){ 
     $('#sr').attr('readonly',true); // On Load, should it be read only? 
    } 

    $('#s').change(function(){ 
     if($('#s:checked').length){ 
      $('#sr').attr('readonly',true); //If checked - Read only 
     }else{ 
      $('#sr').attr('readonly',false);//Not Checked - Normal 
     } 
    }); 
}); 
+0

Champ toujours désactivé, lorsque la case à cocher n'est pas cochée –

+0

avait un '$ j' au lieu de' $ 'en raison de mon environnement avec noConflict;) - mis à jour – f0x

+0

http://jsfiddle.net/He2J4/ ce violon fonctionne selon vos besoins. – f0x

-1

Vous pouvez le rendre disabled = "désactivé"

+0

Oui. Mais à quoi ressemblera ce code jQuery? Si un utilisateur charge la page et que la case est déjà cochée (valeur de DB), le champ doit être lu en lecture seule. Mais, s'il n'est pas déjà vérifié, et que l'utilisateur le vérifie, il devrait devenir en lecture seule. –

+0

http://jsfiddle.net/simoncereska/KeeML/1/ voici un exemple de travail – simoncereska

+0

Cela permet de simplement désactiver la case à cocher. –

4

Je recommande ce qui en fait lecture seule et les personnes handicapées.

$("#sr").attr('disabled', 'disabled'); 
$("#sr").attr('readonly', 'readonly'); 

simplement parce que si quelqu'un est en Carat en mode navigation, rare, mais oui, j'ai eu des clients ce faire, ils peuvent modifier les champs handicapés.

Et pour la case à cocher:

<script type="text/javascript"> 
    $(document).ready(function() { 
     // check upon loading 
     if(!$("#s").is(:checked)) 
     { 
      $("#sr").attr('disabled', 'disabled'); 
      $("#sr").attr('readonly', 'readonly'); 
     } 

     // event 
     $("#s").change(function() { 
      if(!$(this).is(:checked)) { 
      { 
       $("#sr").attr('disabled', 'disabled'); 
       $("#sr").attr('readonly', 'readonly'); 
      } 
      else 
      { 
       $("#sr").attr('disabled', ''); 
       $("#sr").attr('readonly', ''); 
      } 
     } 
     }); 
</script> 
+0

Cela ne fonctionne pas. Le champ est lisible lorsque la case est cochée et décochée. –

+0

lisible ou modifiable? Si vous ne voulez pas qu'ils soient capables de le lire, vous voudriez que cela ne soit pas visible. disabled/readonly ne change que le fait de pouvoir l'éditer ou non. –

+0

J'ai mis à jour ma réponse, il aurait dû être .change pas .click, désolé. –

1
$("input[type=checkbox][checked]").each( 
    function() { 
     $("#sr").attr("disabled", "disabled") 
    } 
); 
1
$(document).ready(function() { 
    $("#s").change(function() { 
     if (!this.checked) { 
      $("#sr").attr('disabled', 'disabled'); 
      $("#sr").attr('readonly', 'true'); 
     } 
     else { 
      $("#sr").removeAttr('disabled'); 
      $("#sr").removeAttr('readonly'); 
     } 
    }); 

    //triger change event in case checkbox checked when user accessed page 
    $("#s").trigger("change") 
}); 

Démo de travail - http://jsfiddle.net/cc5T3/1/

+0

La démo ne fonctionne pas. Lorsque la case n'est pas cochée, elle est toujours désactivée. Et quand je l'ai essayé sur mon site, lorsque la case à cocher a été cochée, et l'utilisateur a accédé à la page; Ce n'était pas désactivé. Puis je l'ai décoché, et il est devenu readonly. –

+0

Désolé, le code et la démo devraient fonctionner maintenant. – ipr101

Questions connexes