2010-10-06 5 views
0

Explication: Au début, la valeur du champ est AAAA-MM-JJ. Si l'utilisateur supprime la valeur et ne tape rien, le bouton "ok" doit être désactivé. Si l'utilisateur supprime la valeur et tape nouvelle valeur, le bouton "OK" doit être activé. Le code ne fonctionne que pour le second cas.événement onkey - problème avec le bouton désactivé

function ChangeOkButton() 
    { 
    if(document.getElementById('fromDate').value == null) 
     { document.getElementById('save').disabled = true; } 
    else {document.getElementById('save').disabled = false; } 
    } 

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeypress="ChangeOkButton();"/> 

Est-ce possible?

Merci!

Répondre

0

Cette fonction n'est pas très utile pour ce type de contrôle, car vous pouvez écraser la valeur avec '12345', 'foobar' ou autre chose qu'une valeur réaliste. Je suppose que vous voulez la date de départ 2000-01-01

function ChangeOkButton(field) { 
    var okbtt = document.getElementById('save'); 
    if ((/^(YYYY\-MM\-DD|2\d{3}\-(0[1-9]|1[0-2])\-(0[1-9]|[12]\{d}|3[01]))$/).test(field.value)) { 
     okbtt.removeAttribute('disabled'); 
    } 
    else { 
     okbtt.disabled = 'disabled'; 
    } 
} 

et votre entrée est

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeyup="ChangeOkButton(this);"/> 

S'il vous plaît noter que je ne l'ai pas considéré les années bissextiles ou jours par mois, ce n'est plus fiable contrôle sur le type de données saisi par l'utilisateur. Modifiez l'expression rationnelle comme vous le souhaitez

Remarque: pensez à placer la variable 'okbtt' en dehors de la fonction pour des raisons de performances, sinon vous devez obtenir une référence chaque fois que vous appelez cette fonction. terrible.

+0

10x! Malheureusement, cela ne fonctionne pas ... Le bouton est activé même s'il n'y a pas de valeur sur le terrain. – Ronny

+0

J'ai essayé sur FF3.6 et cela fonctionne, il suffit de changer "onkeypress" dans "onkeyup" –

+0

j'ai une erreur dans firebut: 'champ est indéfini [pause sur cette erreur] si ((/^(AAAA \ -MM \ -DD ​​| 2 \ d {3} \ - (0 [1-9 ...] \ {d} | 3 [01])) $ /). Test (field.value)) {' – Ronny

Questions connexes