Toestaan ​​dat niet-nummers in een ExtJS datum-kiezer invoerwaarde

Ik ben hier stom van. We hebben een ExtJS-formulier waarop geboortedatum is ingevoerd. Vaak is echter de geboortemaand of -datum niet bekend. De conventie van de gebruiker is om xx's in te voeren wanneer niet bekend - xx/xx/1984.

Als u xx's moet invoeren, kunt u typen, anders kunt u de ExtJS-datepicker gebruiken. Opslaan werkt correct, maar als u de indeling xx/xx/1984 opslaat en vervolgens het formulier opnieuw bekijkt, is het veld leeg in plaats van de ingevoerde geboortedatum weer te geven. Dat komt omdat ExtJS zich verslikt op niet-nummers in het datumveld.

Het PHP-formulier:

echo "<input id=\"dobDt\" name=\"dobDt\" value=\"" . getData("dobDd","textarea") . "/" . getData("dobMm","textarea"). "/" .getData ("dobYy", "textarea") . "\" type=\"text\">

De extJ's:

dobDtFormat = new Ext.form.DateField({
    fieldLabel: '',
    format: 'd/m/Y',
    maskRe : /[\Xx{1,4}\d{1,2}\/]/,
    validationEvent: false,
    allowBlank:true
});
dobDtFormat.applyToMarkup(document.mainForm.dobDt);

Ext vervangt de invoer door het datumveld . Eventuele ideeën over hoe je 'xx' kunt laten verschijnen?

Weet ook niet hoe 'xx' moet worden afgehandeld wanneer de kalender verschijnt en u een dag kiest. Idealiter willen we dat 'xx/xx/1980' in de invoer verschijnt, maar wanneer je de kalender opent, interpreteert het als '01/01/1980 '.

0
Omdat ExtJS geen ondersteuning biedt voor de "xx" datumnotatie uit de doos, zul je
toegevoegd de auteur JD Smith, de bron

1 antwoord

Aangezien ExtJS geen ondersteuning biedt voor de "xx" datumnotatie uit de doos, moet je het DateField-object uitbreiden en waarschijnlijk sommige van zijn functionaliteit opheffen, zoals:

myNamespace.MyDateField = Ext.extend(Ext.form.DateField, {
    //your configs, functions to support "xx" behavior
}

Het klinkt ook alsof je echt moet nadenken en zorgvuldiger moet definiëren hoe dit onderdeel zou moeten werken in alle gebruikscasussen die zouden kunnen optreden. Hoe zou een gebruiker bijvoorbeeld specificeren welke velden (maand, dag en/of jaar) "xx" versus een cijfer zouden moeten hebben? Het DateField is hier niet voor ontworpen, dus u moet daarvoor misschien enkele formuliervelden toevoegen.

For more about creating your own customized ExtJS component, see Sencha's guide here: http://docs.sencha.com/ext-js/4-0/#!/guide/components

(Kijk voor het gedeelte getiteld "Aangepaste componenten maken" ongeveer halverwege de pagina.)

Ik hoop dat dit je helpt. Proost!

1
toegevoegd
Geweldige reactie. We werken aan de uitbreiding van het DateField-object, maar uw opmerking over het definiëren van het toepassingsgebied is waardevol. In dit geval moeten we echt de workflow van de gebruiker vastleggen.
toegevoegd de auteur Voodoo, de bron
Recht op, blij om te helpen!
toegevoegd de auteur JD Smith, de bron