Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Input text type number misbehavior #29469

Open
2 tasks done
brunoluizkatz opened this issue Nov 2, 2021 · 25 comments · May be fixed by #32273
Open
2 tasks done

Input text type number misbehavior #29469

brunoluizkatz opened this issue Nov 2, 2021 · 25 comments · May be fixed by #32273
Labels
bug 🐛 Something isn't working component: text field This is the name of the generic UI component, not the React module! good first issue Great for first contributions. Enable to learn the contribution process.

Comments

@brunoluizkatz
Copy link

brunoluizkatz commented Nov 2, 2021

  • The issue is present in the latest release.
  • I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯

  • Chrome version:
    • 95.0.4638.54 (Official Build) (64-bit) (ubuntu)
    • 95.0.4638.54 (Official Build) (64-bit) (windows)
    • 94.0.4606.85 (Official Build) (Android 10)
  • Firefox version: 93.0 (ubuntu)
  • Safari version: Versão 15.0 (16612.1.29.41.4, 16612) (ios big sur)

When you writes a "e" in the input text type number, the "title" of the field comes back to the middle of input text:

image
image

  • In firefox and safari you can write any digit

image

  • In chrome for Android, we cannot write the letter e, but we can force to write a dot in the end of the number, resulting in the same behavior

image

  • If you write only number, that behavior not occurs

image

They occurs directly into the codesandbox example for the input text page in the current release version

https://codesandbox.io/s/vvitc?file=/demo.js

Expected Behavior 🤔

  • Keep the title like this:

image

Steps to Reproduce 🕹

Steps:

  1. Enter in oficial sandbox environment https://codesandbox.io/s/vvitc?file=/demo.js
  2. Change any input text to type="number"
  3. Write the digit e
  4. Remove focus from input, the title of the input will go to the "default empty location"

Your Environment 🌎

https://codesandbox.io/s/vvitc?file=/demo.js

@brunoluizkatz brunoluizkatz added the status: needs triage These issues haven't been looked at yet by a maintainer. label Nov 2, 2021
@brunoluizkatz brunoluizkatz changed the title Input text type number Input text type number misbehavior Nov 2, 2021
@siriwatknp siriwatknp added bug 🐛 Something isn't working component: text field This is the name of the generic UI component, not the React module! good first issue Great for first contributions. Enable to learn the contribution process. and removed status: needs triage These issues haven't been looked at yet by a maintainer. labels Nov 10, 2021
@ireneguijarro
Copy link

ireneguijarro commented Nov 10, 2021

I would like to work on this

@alisasanib
Copy link
Contributor

alisasanib commented Nov 12, 2021

I think there is a workaround for this issue, according to the doc. Passing InputLabelProps={{ shrink: true }} as a prop to the TextField component will avoid this situation.

@prtkgoswami
Copy link

prtkgoswami commented Nov 24, 2021

I see this isn't assigned to anyone? Can I give it a try?

@hubertnare
Copy link

hubertnare commented Nov 25, 2021

I think there is a workaround for this issue, according to the doc. Passing InputLabelProps={{ shrink: true }} as a prop to the TextField component will avoid this situation.

This solves the issue...

@jasonghent98
Copy link

jasonghent98 commented Dec 10, 2021

Has this issue been resolved/closed yet? It seems like the problem has been solved @alisasanib . Unless there is something else that needs to be fixed.

@KshitijPatil39
Copy link

KshitijPatil39 commented Dec 19, 2021

Is anyone working on this? If not I will make the changes and create a PR

@wladimirguerra
Copy link

wladimirguerra commented Dec 27, 2021

I think there is a workaround for this issue, according to the doc. Passing InputLabelProps={{ shrink: true }} as a prop to the TextField component will avoid this situation.

This solves the issue...

I don't think so. It is a good workaround though.

What if I have a form with multiple inputs? I would like them to have same look and feel. In case the form have a number or date input mixed with other text inputs, I would be forced to make all input labels to be shrunk.

I believe that issue should be properly resolved.

@wladimirguerra
Copy link

wladimirguerra commented Dec 27, 2021

It seems that no one is working on that. I have made the changes and will work on the tests. Soon I will create a PR, if no one does first. :)

@Mansvini
Copy link

Mansvini commented Apr 9, 2022

What is the location of the file which contains the sandbox code which needs to be edited in the repository?

@wladimirguerra wladimirguerra linked a pull request Apr 12, 2022 that will close this issue
1 task
@shabar-shab
Copy link

shabar-shab commented Jul 26, 2022

@wladimirguerra is this still open I would like to work on this.

@wladimirguerra
Copy link

wladimirguerra commented Jul 28, 2022

@adarshanand67
Copy link

adarshanand67 commented Aug 2, 2022

Is this issue still open? I would like to work on it.
I'm a first timer.
Could you put me through on the details so I could know what to do?

@wladimirguerra
Copy link

wladimirguerra commented Aug 3, 2022

@adarshanand67 have a look at this draft to attempt to fix the problem. It seems to be simple but it is hard to make a proper test case because of the testing library limitation. I am not sure that the changes fixed the problem.

@prankurnov15
Copy link

prankurnov15 commented Aug 22, 2022

If this issue is still open can I give it a try ?

@michaldudak
Copy link
Member

michaldudak commented Sep 1, 2022

@prankurnov15 feel free to take it. It's not assigned to anyone.

@vguleria1108
Copy link

vguleria1108 commented Sep 3, 2022

Issue is with <input type="number" /> itself.
So In my opinion this can be solved by adding Regex check for type number

@kanishbodhwani
Copy link

kanishbodhwani commented Sep 20, 2022

Is this issue still open ? I want to work on it

@michaldudak
Copy link
Member

michaldudak commented Sep 20, 2022

@kanishbodhwani do you have an idea of how you'd like to fix the problem? The number input has some inherent issues, and its behavior differs across browsers. There's a good article describing the problem: https://stackoverflow.blog/2022/09/15/why-the-number-input-is-the-worst-input/

@kanishbodhwani
Copy link

kanishbodhwani commented Sep 20, 2022

@michaldudak Can I make a function that restricts user to input e in the text field, I've already tried in code sandbox, It worked for me. Please correct me if I am wrong

@michaldudak
Copy link
Member

michaldudak commented Sep 20, 2022

It's not just about "e". There are other characters ("+", "-", ".") that can make the input value invalid when misused. IMO recommending not to use type="number" would be the safest option.

@kanishbodhwani
Copy link

kanishbodhwani commented Sep 20, 2022

There are not more, A single function can fix them all

@kanishbodhwani
Copy link

kanishbodhwani commented Sep 20, 2022

I think this will work for chrome, not sure for other browsers.

Please review this

Code 2

Code 1

PS: I am not good in naming functions

@michaldudak
Copy link
Member

michaldudak commented Sep 20, 2022

As stated in the description of the issue and the article I linked, other browsers behave differently. In Firefox, for example, you can type any character. While I appreciate your efforts, I don't want to include a half-baked solution.

Additionally, your solution does not consider pasting a value in the input.

@kanishbodhwani
Copy link

kanishbodhwani commented Sep 20, 2022

Okay, Thank you for the update. Will solve another issue :) 😊

@jesrodri
Copy link

jesrodri commented Sep 29, 2022

Hi, can I try this one?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🐛 Something isn't working component: text field This is the name of the generic UI component, not the React module! good first issue Great for first contributions. Enable to learn the contribution process.
Projects
None yet