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

Add prevententersubmit attribute to form element #8158

Open
NagayamaToshiaki opened this issue Aug 4, 2022 · 9 comments
Open

Add prevententersubmit attribute to form element #8158

NagayamaToshiaki opened this issue Aug 4, 2022 · 9 comments
Labels
i18n-clreq Notifies Chinese script experts of relevant issues i18n-jlreq Notifies Japanese script experts of relevant issues i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response. topic: forms

Comments

@NagayamaToshiaki
Copy link

In Japan (and countries that use IME) there is a problem that unintended press of enter key because they forget to turn on the IME. To fix the word input in IME, you typically have to type the enter key, so this kind of mistake happens.

To solve this problem, there are some JS workarounds, but it makes the behavior of the submit button unclear.

So I suggest the prevententersubmit attribute which, when it is set, disallows enter key to submit the form data.

@smaug----
Copy link

smaug---- commented Aug 4, 2022

Why can't one have just a key event listener on the form element and call preventDefault() if the key is enter ?

@pshaughn
Copy link
Contributor

pshaughn commented Aug 4, 2022

This might be a general IME problem that shouldn't depend on page authors opting into the fix on a form-by-form basis.

Perhaps when IMEs that care about the enter key are in effect, a single enter press on a text input should just always bring up an IME interface instead of submitting. Is there a central place to specify/recommend IME behavior like that?

@NagayamaToshiaki
Copy link
Author

NagayamaToshiaki commented Aug 5, 2022

This might be a general IME problem that shouldn't depend on page authors opting into the fix on a form-by-form basis.

I don't think so. IMHO the default behavior is awful. They (mostly europian language user) didn't consider IME user when they created the spec. If the spec came first, we might have a select word key besides the enter.

Perhaps when IMEs that care about the enter key are in effect, a single enter press on a text input should just always bring up an IME interface instead of submitting. Is there a central place to specify/recommend IME behavior like that?

When Windows IME (and other simular IMEs) is on "半角英数" mode, IME is effectively turned off, unless you type "半角/全角" key to activate Japanese input mode. So if input behavior changed, we will be confused.

@o0101
Copy link

o0101 commented Aug 22, 2022

Why can't one have just a key event listener on the form element and call preventDefault() if the key is enter ?

Too much effort. Should be as simple as adding prevententersubmit (good name, but could be shorter? hard task, I will try: ... actually it's really hard. But I think I have a solution, why not an ime attribute that can contain options (similar to the feature policy token list you can have in iframe's sandbox and allow attributes).

Do we really think we can write a spec in English, mostly by European authors (as OP says), and account for all the crazy IMEs around the world? Crazy in a good way, there's so many of them, and each so complex and locale specific. But we can't hope to understand all the nuances without being those users, so "speculating" (speccing?) for them / on behalf of them, without full understanding is wrong. And limiting, and costs people a lot of frustration (as OP hints at), when behavior doesn't make sense to people using it.

It's a can of worms, but would be good to have some options to allow authors to interface with and configure that complexity to some extent. Better to use HTML options than JS as you avoid the temptation to create an overly "complex and complete" API, but rather limit it to some achievable modest set of useful things, like:

<input type=text ime="noentersubmit">

I tried really hard to think of another good "feature policy" to add to that attribute but I can't. I'm not an expert and not the best person to be coming up with this. Would be great to have input from people using IMEs regularly.

Perhaps when IMEs that care about the enter key are in effect, a single enter press on a text input should just always bring up an IME interface instead of submitting. Is there a central place to specify/recommend IME behavior like that?

Yeah I don't think the form behavior should depend on whether an IME is active or in a particular mode or not, it would be confusing.


But thinking about it, IMEs are normally separate parts of the system to the browser (I think, at least on device). So how could something inside a HTML page in a browser, interface with and specify that "externality"? I think that would be too hard.

But then again the "host application" for the IME can inform the IME of things ("Sorry, GIF input is not supported here") so there must be some communication.

Massive can of worms, but would be great if it (spec) could make it easier. Rather than push complexity and confusion "downstream" to people IMEing. Would be good to solve (try to solve), some at least, upstream. I think options like this is tentatively a good idea!

@annevk annevk added topic: forms i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response. i18n-jlreq Notifies Japanese script experts of relevant issues labels Aug 29, 2022
@annevk
Copy link
Member

annevk commented Aug 29, 2022

@NagayamaToshiaki is this a problem across all operating systems or are some more problematic than others? Also, if you could provide more detailed steps to reproduce that would be great so we can study the exact scenario better.

@smaug----
Copy link

If this is a common issue, perhaps browser implementations should handle this internally. Many pages wouldn't use prevententersubmit, just because they are often developed by people not using IMEs.

@himorin
Copy link

himorin commented Aug 30, 2022

@masayuki-nakano you may have something wanted to say?

@r12a r12a added the i18n-clreq Notifies Chinese script experts of relevant issues label Aug 30, 2022
@macnmm
Copy link

macnmm commented Aug 31, 2022

When native apps have issues with IME it is usually because they are not passing the key events to the IME to be processed before they do their own processing. Web apps should be able to do the same. It is not a good solution to just block enter key to submit; the correct behavior should be to end the active IME session with the enter key and enter to submit on the subsequent one. IMHO.

@masayuki-nakano
Copy link

masayuki-nakano commented Sep 1, 2022

I think that the motivation of preventing to submit the form by Enter key presses is not caused by wrong behavior of IME but also preventing user's error.

Typically, non-IME users do not press Enter at typing single line text unless they want to do something with Enter key like submitting the form. On the other hand, IME users press Enter key for committing conversion for every word (especially with Japanese IME. Chinese IME and Korean IME do not use Enter key to committing converting words as far as I know) or something using other IME features. Therefore, the number of accidentally pressing Enter key of IME users must be higher than the non-IME users'.

I think that the problematic scenarios are:

  • User presses Enter key too long so that the auto-repeat is triggered
  • User accidentally press Enter key twice, e.g., just twiched

The former may be prevented by the browser level, i.e., don't submit the form with Enter key press if it's caused by auto-repeat. However, the latter requires web author's intention. E.g., if the form is not so important data, e.g., chat tool, not working Enter as form submission makes users feel inconvenient. Therefore, it's impossible to do something in browser level, for example, once Enter key is used in <input>, stop handling Enter as submitting the form, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
i18n-clreq Notifies Chinese script experts of relevant issues i18n-jlreq Notifies Japanese script experts of relevant issues i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response. topic: forms
Development

No branches or pull requests

9 participants