Je suppose que vous pouvez utiliser Prototype (framework Javascript) puisque vous utilisez Rails. Cela peut être exagéré, mais vous pouvez ajouter un observateur dans ce champ pour surveiller l'événement focus. À partir de là, appelez une fonction qui définit la valeur du champ de points sur 50 et rend le champ de points en lecture seule (ou désactive le champ). Quelque chose comme ceci:
// Add the observer on the field when the DOM loads
document.observe("dom:loaded", function() {
// Observe object with ID = "match_email" for focus event
$('match_email').observe('focus',respondToEmailFocus);
});
// Function to call when the user focuses on the email field
function respondToEmailFocus(event){
// Find object with ID = "match_points" and set the value = 50
$('match_points').value = 50;
// Find the object with ID = "match_points" and make it read only
$('match_points').readOnly=true;
// Instead of setting to read only, you could disable the field using:
// $('match_points').disable();
}
est ici plus d'informations sur events and Prototype si vous avez besoin de le modifier.
Alors que vous pourriez juste mettre ce code directement dans la vue, la meilleure pratique consiste à garder votre Javascript séparé du code de vue (Javascript discret). Vous pouvez mettre ce code dans un fichier Javascript séparé, puis inclure ce fichier en utilisant javascript_include_tag de Rail. Si vous ne souhaitez pas utiliser Prototype, vous pouvez simplement ajouter l'attribut onFocus dans le champ e-mail et appeler une fonction similaire à celle ci-dessus (respondToEmailFocus). Puisque vous n'utilisez pas Prototype, vous devez utiliser document.getElementById('match_points')
au lieu de $('match_points')
pour trouver le champ de points.
Est-ce toujours 50 points, peu importe quoi? Si c'est le cas, vous pouvez déplacer ce code dans le modèle. –
oui, toujours ... mais l'utilisateur a besoin de voir que c'est 50 points – keruilin
vous pouvez le faire en utilisant javascript puis – Salil