2009-07-01 4 views
1

Je souhaite effectuer une vérification de date sur un TextBox avec un événement onBlur. Je ne suis pas sûr de savoir comment vérifier la zone de texte en javascript sur le côté aspx. Voilà ce que j'ai jusqu'à présentPuis-je effectuer une vérification de date sur un TextBox avec un événement onBlur?

TodayDate= new Date(); 
function checkEnteredDate() { 
if (document.getElementById('txtDate') > TodayDate) { 
alert("You cannot select a date later than today."); 
document.getElementById(TodayDate); 
} 
} 

déjà une fonction javascript, je ne peux pas obtenir la valeur dans la zone de texte pour une comparaison. Des suggestions?

Répondre

2

Vous pouvez essayer passer le "ceci" à la fonction:

<asp:TextBox ID="Text1" onblur="CheckEnteredDate(this);" runat="server" /> 

Modifier: Voici comment la fonction javascript utiliserait que (environ):

function CheckEnteredDate(passed) { 
    if (new Date(passed.value) > new Date()) { 
     alert('Date greater than today'); 
    } 
} 
+0

Cela fonctionnera finement sans "javascript:" préfixe – Kamarey

+0

Désolé, la force de l'habitude. :) Corrigé mon exemple. – CAbbott

+0

Le constructeur Date() attend le nombre de millisecondes depuis 1970. Pensez-vous vraiment que l'utilisateur va taper ça ?! –

-1

Vous devriez juste pouvoir ajouter un appel de fonction à ceci à l'événement onBlur pour la zone de texte.

+0

la fonction est déjà Licenciement. Je ne sais pas comment appeler ce qui est dans la zone de texte – MrM

-1

Lorsque vous passez la zone de texte à document.getElementById, elle renvoie un objet HTML et non le texte dans la zone de texte. Utilisez la propriété value pour obtenir la valeur entrée par l'utilisateur. Voir ci-dessous:

function checkEnteredDate() 
{ 
    var inputDate = document.getElementById('txtDate'); 
    if(inputDate == '') 
    { 
     alert('You must specify date.'); 
     return false; 
    } 

    inputDate = new Date(inputDate); 
    var today = new Date(); 
    today.setHours(0, 0, 0, 0); //By default today's date will have time portion as well. 

    if(inputDate > today) 
    { 
     alert('You can not select a date later than today'); 
     return false; 
    } 

    return true; 
} 
0

Utilisez la bibliothèque DateJs pour effectuer la validation de date côté client comme ceci ...

function checkEnteredDate() { 
    var elem = document.getElementById('txtDate'); 

    if(Date.parse(elem.value) > Date.today()) { 
     alert("You cannot select a date later than today."); 
     elem.select(); 
    } 
} 
0

Si vous utilisez Microsoft Ajax, l'analyse de la date est déjà gérée par les bibliothèques de références javascript fournies.

<asp:TextBox ID="Text1" onblur="CheckEnteredDate(this);" runat="server" /> 

ensuite sur l'appel de fonction:

function CheckEnteredDate(passed) { 
    var value = Date.parseLocale(passed.value, 'd'); 
    if (isNaN(value)) 
     alert('Not a valid date.'); 
    if (value > new Date()) 
     alert('You cannot select a date later than today.'); 
} 
Questions connexes