bircastri
bircastri

Reputation: 2169

How can set data on TextField from DatePicker

I'm building a custom modal in appcelerator studio.

So this is the code:

<Alloy>
    <Window id="modal_add_edit" onClose="cleanup" modal="true">
        <View class="container">
            <Label id="title" class="title"/>
            <View class="separator"></View>

            <TableView id="table" height="Titanium.UI.SIZE" layout="vertical">                          
                    <TableViewRow class="menu_item" top="25">
                        <Label id="description" class="label" left="12" />
                        <Picker id="comboDecription" left="20" selectionIndicator="true">
                            <PickerColumn id="column1">
                                <PickerRow title="Esposizione Tossica"/>
                                <PickerRow title="Stato civile"/>
                                <PickerRow title="Diet"/>
                            </PickerColumn>
                        </Picker>
                    </TableViewRow>

                    <!-- flags -->
                    <TableViewRow id="data" class="menu_item" top="25">
                        <!--DATA START-->
                        <Label id="start_date" class="label" left="12" />
                        <TextField id="textStartDate" class="field"
                             width="200px"></TextField>
                    </TableViewRow>



            </TableView>

            <View class="separator"></View>
            <TableView id="tableButton" width="Titanium.UI.FILL" layout="horizontal">                           
                    <TableViewRow class="menu_item" top="25">
                        <Button id="buttonClose" class="buttonClose" onClick="onClose" ></Button>
                        <Button id="buttonSave" class="buttonSave"></Button>
                    </TableViewRow> 
            </TableView>
        </View>
    </Window>
</Alloy>

So I want that if the user click on textStartdate, the DatePicker is showing. This is the code of my controller:

var picker = Ti.UI.createPicker({});
$.textStartDate.addEventListener('click', function(e) { 
    picker.showDatePickerDialog({
        value : new Date(), // some date
        callback : function(e) {
            if (e.cancel) {
                Ti.API.info('user canceled dialog');
            } else {
                selectedDate = e.value;
                $.textStartDate.setValue(String.formatDate(selectedDate, 'medium'));
            }
        }
    });
});

Then if I try to click on textStartDate, I can see the DatePicker, then I set the data, click on OK button but I can't display the data on textStartDate.

If I can try in debug, the code:

String.formatDate(selectedDate, 'medium')

return the correct data but I can't see it on my edittext

edit I add the screen shot

enter image description here

this is the class of field in app.tss

".field": {
    left: "5%",
    width: Titanium.UI.FILL,
    borderRadius: 5,
    hintTextColor: "#aaa",
    color: "#333",
    backgroundColor: "white"
}

Upvotes: 0

Views: 153

Answers (1)

Prashant Saini
Prashant Saini

Reputation: 3539

As you said that String.formatDate(selectedDate, 'medium') is returning correct data, but you cannot see the date, so I can guess that it might be the problem with your text-field color properties.

Make sure that you have set the color property to different one than the text-field backgroundColor, or if you have not set any such property, then I still suggest you to set color and backgroundColor properties and some default value to make sure that your text value is properly visible in the text field.

Sometimes depending on themes or OS type, default text color & backgroundColor combinations could be same which makes the text value invisible.

Upvotes: 1

Related Questions