onBlur form validation and "touched" state - React and tsx - forms

i was curious why we have to use "touched" state if we want to do onBlur validation. My problem is that when I refresh the page, the fields that were not blurred are already validated. Red or green color is displayed, but neither should be.
The problem is solved with the "touched" state, but why do I have to use that state, if onBlur function validates onFocusOut (on refresh, not a single field is blurred).
This happens when i refresh page.

Related

Delphi How can I detect a click event anywhere on a form including other components

I have a TEdit in a Delphi VCL form app (contained in a TFrame instance, if it matters). After a user indicates they are finished editing, by clicking elsewhere on the form, the caret and focus remain on this control until I click on another control, which then takes the focus. However, I want the TEdit to loose focus regardless of where the user clicks. I expect I can use ActiveControl := nil to end focus on the selected control, but I am uncertain where to invoke it.
What I want is for the focus to leave the selected control without necessarily having to transfer it to another control. I could end focus in the form's OnClick event, but that will not work if the user selects any of the other controls (also contained in frames) on my form, since the form's OnClick event is not triggered. It seems inelegant and tedious to provide separate OnClick events for each additional item on the form.
What is the global solution to achieve this behavior?
Try using the TApplication(Events).OnMessage event to look for WM_LBUTTONDOWN messages.
You can use the VCL's FindVCLWindow() or FindDragTarget() function (both in the Vcl.Controls unit) to see if there is a TWinControl located at the click coordinates. Or simpler, you can use the VCL's FindControl() function (also in the Vcl.Controls unit) to get an TWinControl directly from the message's target HWND.
If no control exists under the mouse, or if the control is not focusable (its CanFocus() method returns False), then set ActiveControl=nil. Otherwise, do nothing, and let the clicked control take focus on its own when the message is processed.

Why does clicking on a TextFormField trigger didUpdateWidget()?

I've ran into a problem. In one section of my page I have a date with today's date. If the user clicks on an arrow to the right it goes forward a date and if they person clicks an arrow to the left it goes back a date. On the arrow buttons I am using setState. The date changes perfectly fine.
I also have a form below on a separate card. To each textFormField I h ave a controller set up. I had to set these up because initialvalue: only gets called once so the fields were never changing with the date.
Anyway the fields now change with the date and it is correct. But the moment I click on the form, The top widget date shoots back to the initial value it was at?
I checked this by setting up a didUpdateWidget override and this is firing every time I click on the form field??? Why is this happening. I am not updating anything yet.
When I used a controller for the date value displayed between the two arrows it doesn't change but when I hit submit the value it's supposed to be assigned to is the wrong (very first date that appears). So it seems like when didUpdate fires it is setting that field which I have set in my extends StatefulWidget class{}.
EDIT: Wow typing that last sentence made me realize I needed to set the value in my bottom class that extends State<>. I was using it with widget.activeDay.
I guess I'm still curious as to why this is happening with the text form field though?
Clicking on a text-field opens the keyboard.
This changes the screen dimensions and leads to MaterialApp rebuilding the route.
The route rebuilding ultimately calls didUpdateWidget on that specific widget.

Key event not caught the 1st time after a dialog is displayed

In catching a "key" event in CKEditor, we have a case where a dialog is displayed if a key is typed within a certain HTML span.
After the dialog is dismissed, the 1st key typed does not register on the key listener, but all subsequent keys DO register.
Is this something anyone else has seen?
We're using CKEditor in its inline form, in an application framework based on GWT (Google Web Toolkit). It's possible that GWT is somehow messing with event handling, but I'm not sure how that might be.
I tried setting the event priority very high, but that didn't solve the problem.
After I noticed that the text insertion cursor was not visible until after I tried to type a character after the dialog was dismissed, I tried explicitly setting focus after the dialog is dismissed. This ended up fixing the issue.
I'm not sure why focus would not be on CKEditor until after I did that, or until after a character is typed, but that appears to be the fix.

Setting Widget Focus in Gtkada

I'm trying to create a simple test program in Gtkada to bring up a Dialog box upon leaving a specific textbox. I have managed this part, but am having problems resetting the focus back to the original textbox when the Dialog's 'Ok' button is pressed.
The general idea is that the user enters something into a textbox and when they click/tab out of the box (focus out event), some simple Alphanumeric validation is done. If the validation fails, the user is warned with a Dialog, and focus is returned to the textbox they entered erroneous data into.
All I am after is a simple example of how to set the focus back to a textbox when you close the Dialog box which clicking out of the textbox originally called. In Gtkada... I'm using version 2.2 of Gtkada. I can't change the version of Gtkada, or use a different program or language!
Much obliged!
Tim
The most elegant solution, GUI-wise, is to do the validation on a leave_event on each input field, and if that fails display an error message (in red or some such) next to the field. But do not display a dialog or force the focus to a specific field, that would interfere with what the user is trying to do (imagine: I enter an incorrect email address, press tab, get the dialog which I do not read (like most users), start typing my name for the next field, but since the focus went back to the email address, I have no overridden that one and lost my previous input).
If you still want to grab the focus, Gtk.Widget.Grab_Focus is the procedure you want.

GWT eventhandler specifics

I am making a simple webui in gwt and I want to implement the following functionality: once the user clicks a checkbox, a new text area with some wording appears. When the user unchecks the textbox, the textarea disappears. Can anyone show me the implementation on how to do this?
The CheckBox has a ValueChangeHander < Boolean >. You can use this to get the actual value, after the change.
There is also an example to get the value within the clickhandler.
http://www.gwtproject.org/javadoc/latest/com/google/gwt/event/logical/shared/HasValueChangeHandlers.html