Playbook input type date change event - html

I'm trying to make use of the input type date on playbook, and it seems that no events are sent when a date is selected in the date picker.
Hence I cannot do any validation on that date.
Does anybody know if any event is sent when the input value is changed with the datepicker?
Edit:
I'm developing a tablet webapp in html, the datepicker is the native one that appear in the browser.
<input type="date" />
I want to show the native datepicker when possible (iOs 5+, Playbook, ..) and a home brewed datepicker for other touch devices

The events that should be fired are input and change. I don't have access to a Playbook or an iOS 5 device, but this example works in Opera (which has also implemented native date pickers).
<form oninput="date_diff()">
<label for="date1">First date:</label>
<input id="date1" type="date" value="2011-08-24">
<label for="date2">Second date:</label>
<input id="date2" type="date" value="2011-08-25">
</form>
The date_diff function gets executed whenever one of the date values is changed.

Related

How to handle html date picker having type="date" using selenium , on date selection no change in html dom

I am trying to handle the html based date picker, I am able to click on it so that the date picker calendar pop up, but there is no inspect option for calendar.
Even when i manually select the date there is no such change in the HTML DOM, that can be used.
i tried adding date inside it using following workaround, none of them worked(no , thing happening in DOM).
jse.executeScript("document.getElementById('date-input').value='10101990'");
driver.switchTo().activeElement().sendKeys(Keys.TAB);
driver.findElement(By.id("date-input")).sendKeys(Keys.TAB);
In web it appears as editable along with select from calendar option(run the code snippet below)
while in mobile (web) its appearance is different as shown in screenshot.
is there any solution with JAVA-Selenium : Inspect HTML5 date picker shadow DOM
<label for="start">Start date:</label>
<input type="date" id="start" name="trip-start"
min="2020-01-01" max="2020-12-31" value>
<input class="Input-module_input__nj1kl" type="date" id="date-input" data-testid="date-input" placeholder="Date of Birth" required="" aria-invalid="false" aria-describedby="birth-date-input-error" aria-required="true" min="1920-01-01" max="2020-08-18" value>
<label for="date-input" class="Input-module_label__npqrt1">Date of Birth*</label><label for="date-input" class="Input-module_label__30ytr">Date of Birth*</label>
<span role="alert" id="date-input-error" class="Input-module_errorMessage__lMKY" style="display: none;">Please enter a valid date of birth</span>
Below Code sample have worked for me.Update your required date in format yyyy-MM-dd for the variable date
driver.get("http://127.0.0.1:8887/");
JavascriptExecutor js = (JavascriptExecutor) driver;
String date="2009-02-09";
js.executeScript("document.getElementById('date-input').value ='"+date.toString()+"'",2000);
Change your required Id in getElementById('date-input') inside the js executor
Well... I can simply tell you the simple logic
By default when the calendar opens then-current date is selected
You need to check if current date is less or greater than date to be selected. Date.compareTo function will help here
Then you need to navigate to the corresponding month and year combination.
Once you are in the right month and year then you can select the date as well.

How to change date format from input type date in input field in reactjs?

I'm using input type date in my reactjs project it's working fine but as I requirement I need to change date format dd/mm/yyyy to yyyy-mm-dd..tried but not getting any solution.
My code is:
<Input
type="date"
format="YYYY-MM-DD"
id="start_date"
name="start_date"
placeholder="Start Date"
value={this.state.start_date}
onChange={this.onChangeHandle}
className="form-control"
/>
the displayed date is formatted based on the locale of the user's browser
- MDN
So you probably don't need to worry about it, but you might want to change your browser locale to test it.

How to detect date selection in ng-bootstrap Datepicker on input field?

We use the ng-bootstrap Datepicker as Directive in our project:
<input class="form-control"
name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close()" [(ngModel)]="model"
(ngModelChange)="onDateSelected()">
The current behaviour is that onDateSelected() is called when a date in the datepicker is selected, as well as every time a change is made to the input field.
The desired behaviour is that onDateSelected() is called whenever the user clicks on a date in the datepicker or moves the cursor out of the <input> (i.e. blur).
My approach was to change (ngModelChange) to (blur):
<input class="form-control"
name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close(); onDateSelected()"
[(ngModel)]="model">
but this leads to onDateSelected() not being called, when a date is selected from the datepicker - which kinda makes sense, because the cursor is not inside the <input>. However, I could not find some sort of dateSelected-Event when searching the ng-bootstrap docs on which I could call onDateSelected():
<input class="form-control"
name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close(); onDateSelected()"
/* missing -> */ (dateSelected)="onDateSelected()" /* <- */ [(ngModel)]="model">
Is there something I miss? Or maybe another way to implement this behaviour? I can't think of being the only one with this requirement...
Meanwhile, the issue has been closed and there will be a (dateSelect) event in 1.1.0: https://github.com/ng-bootstrap/ng-bootstrap/pull/2254
<input class="form-control"
name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close()"
[(ngModel)]="model"
(select)="onDateSelected()">
This will work and onDateSelected() is called whenever you select a date in datepicker
Here is the solution:
<input
class="form-control"
name="startDate"
[(ngModel)]="startDate"
(dateSelect)="doSomething()"
(blur)="doSomething()"
ngbDatepicker
#startDate="ngbDatepicker"
>
Here (dateSelect) handles choosing from the calendar picker and (blur) handles manually input when the input loses focus.
Guess select output method is what you are looking for.
Select: An event fired when user selects a date using keyboard or mouse. The payload of the event is currently selected NgbDateStruct.
Refer the output section
Using dateSelect worked for me:
<input class="form-control"
name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close(); ()onDateSelected()"
[(ngModel)]="model">

Datepicker in html

I have a date fields in my Form and I want user to select the dates from the calendar. however I need to create a datepicker.Searched on net still cant find the best answers.Is it possible to have a date picker in html?
You can add a datepicker in html with one of HTML5 Input Types, but also (not supported in Internet Explorer), For example :
<form action="action_page.php">
Birthday:
<input type="date" name="bday">
<input type="submit">
</form>
See DEMO from w3schools.com

iOS5 Safari only attached a date picker to one input element

In the following code on a web page only displays the iPhone Date picker on the first input.
<form action="#" method="post" ...>
<input type="date" name="date-from" placeholder="10/08/2012">
<input type="date" name="date-to" placeholder="10/08/2012">
</form>
Has anyone else come across this? I'm guessing it is a mobile Safari bug rather but I can't find anyone else with the same problem nor any documentation on only the first date field having the date picker attached to it.
Screenshot below for reference
Looking at the development code again, a duplicate type attribute was overriding the initial declaration. Rookie error!