Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Submitting a form by hitting return when the submit button is hidden; works in Firefox, does nothing in Chrome

I have a form with some input fields and a hidden submit button (hidden via style="display:none").

When you hit the return key when an input field is focused in Firefox, the form submits.

However in Chrome, when you hit return, nothing happens. I was wondering, how do you add this functionality back to Chrome?

Here's the form, take a look at it in Chrome: http://jsfiddle.net/B59rV/2/

<form method="post"  action="/xxxx" accept-charset="UTF-8">

    <input type="hidden" value="SSjovFqEfRwz2vYDIsB6JRdtLAuXGmnT+tkyZnrtqEE=" name="authenticity_token">

    <div class="input text_field">
    <label>Email</label>
    <input type="text" size="30" name="user_session[email]" />
  </div>

  <div class="input text_field">
    <label>Password</label>
    <input type="password" size="30" name="user_session[password]" />
  </div>


    <input type="submit" value="Sign In" style="display: none;" >

</form>
like image 238
MintDeparture Avatar asked Mar 07 '11 21:03

MintDeparture


3 Answers

I have literally no idea why it's not working in Chrome. I think it's a bug.

However, it is somehow to do with that display: none.

I found a nasty, horrible (!!) workaround:

input[type="submit"] {
    position: absolute;
    top: -1000px
}

Don't hide it: instead, position it off the screen.

Live Demo - works in Chrome.

like image 86
thirtydot Avatar answered Oct 16 '22 14:10

thirtydot


Tested in Chrome 22 and Firefox 18 perhaps this is the best workaround

.hide-submit {
    position: absolute;
    visibility: hidden;
}

<button type="submit" class="hide-submit">Ok</button>

Or a more generic way

input[type=submit].hide,
button[type=submit].hide {
    display: block;
    position: absolute;
    visibility: hidden;
}

<input type="submit" class="hide">Go</input>

This basically hides the element in plain sight, no need to push it outside the screen

like image 34
Rui Gonçalves Avatar answered Oct 16 '22 14:10

Rui Gonçalves


The best way to do this is:

<input type="submit" hidden />

Example:

<form onSubmit="event.preventDefault(); alert('logging in!')">
  <label for="email">email:</label>
  <input type="email" name="email" required />

  <label for="password">password:</label>
  <input type="password" name="password" required />

  <input type="submit" hidden />

  <p>Press enter to log in</p>
</form>
like image 21
nxtman123 Avatar answered Oct 16 '22 15:10

nxtman123