Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I automatically tab to the next field using jQuery?

In jQuery, how can I trigger the behavior of a user tabbing to the next input field?

I've tried this:

var e = jQuery.Event("keydown");
e.which = 9; // # Key code for the Tab key
$("input").trigger(e);

But triggering the event doesn't move the cursor to the next field.

I suppose I could move the cursor manually using focus(), but deciding which field should be next is something the browser already knows how to do, so it seems much cleaner to just trigger a tab.

Any ideas?

like image 452
Nathan Long Avatar asked Jun 15 '11 15:06

Nathan Long


People also ask

How do I move focus to next input with jquery?

keydown(function () { $(this). next(). focus(); }); jquery.

How to auto tab in javascript?

To connect the script to the HTML input fields, you'll want to execute the function on, add the “oninput” attribute to the “input” element you want to move away from after the maximum character length has been selected. Enter the “autotab” function as the value of “oninput.”


2 Answers

Here's one solution, via http://jqueryminute.com/set-focus-to-the-next-input-field-with-jquery/

$.fn.focusNextInputField = function() {
    return this.each(function() {
        var fields = $(this).parents('form:eq(0),body').find(':input').not('[type=hidden]');
        var index = fields.index( this );
        if ( index > -1 && ( index + 1 ) < fields.length ) {
            fields.eq( index + 1 ).focus();
        }
        return false;
    });
};

The use is as follows:

$( 'current_field_selector' ).focusNextInputField();
like image 110
Yardboy Avatar answered Sep 19 '22 03:09

Yardboy


See the accepted answer to this question. If for example you want to move focus to the next field when a certain number of characters have been entered, you could use that code in the keyup event, and check the entered number of characters.

The code in that answer works by getting the set of inputs in the form, finding the selected input and adding 1 to the index of the selected input, and then triggering the focus event on the element with that index.

like image 45
James Allardice Avatar answered Sep 19 '22 03:09

James Allardice