J'ai posté une démo sur au: jsbin, sur la base le balisage suivant:
<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(
function() {
$('#onSale').change(
function() {
var salePrice = $('#price').val() * 0.9;
$('#salePrice').val(salePrice);
}
);
}
);
</script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<form method="post" action="">
<fieldset>
<label for="price">Price:</label>
<input type="text" id="price" name="price" />
<input type="text" name="salePrice" id="salePrice" disabled="disabled" />
<input type="checkbox" name="onSale" id="onSale" />
</fieldset>
</form>
</body>
</html>
Je vous suggère que vous auriez besoin de construire dans la validation pour le prix entré par l'utilisateur (assurez-vous qu'il est un prix numérique, fo r un début). J'ai désactivé le #salePrice
afin que les utilisateurs soient moins enclins à entrer des données (bien que ce ne soit pas impossible).
Edité en réponse au commentaire de l'OP.
Pour effacer le champ après la non coche la case utilisateur:
$(document).ready(
function() {
$('#onSale').change(
function() {
if ($('#onSale').is(':checked')) {
var salePrice = $('#price').val() * 0.9;
$('#salePrice').val(salePrice);
}
else {
$('#salePrice').val('');
}
}
);
}
);
Notez le nouveau if/else
, et est ici the revised demo
Merci beaucoup. : D Serait-il assez facile de faire en sorte que le champ sale_price soit vide si la case n'est pas cochée, au lieu de mettre le prix? :) – doubleplusgood
Oui, il est facile de le rendre vide si la case n'est pas cochée. Voir ma réponse mise à jour ci-dessus. – Mischa
vous voudrez peut-être ajouter une validation au cas où l'utilisateur met quelque chose d'idiot comme un mot. Probablement le moyen le plus facile est de faire quelque chose comme (+ prix> 0 && checkbox.checked) – cm2