Javascript / jQuery转到下一个输入/选择更改选择值

时间:2015-09-27 14:53:45

标签: javascript jquery input key simulate

我编写此脚本来模拟tab键。我从这里混合了两个不同的例子,只对输入工作正常。

我的脚本是

$("#home").on('keydown', function(event) {
    if(event.ctrlKey && ( event.which === 39 ) ) {
    var target = document.activeElement;
        var next = target;
        while (next = next.nextElementSibling) {
            if (next == null)
                break;
            if (next.tagName.toLowerCase() == "input" || next.tagName.toLowerCase() == "select") {
                next.focus();
                break;
            }
        }
    }
});

我有两个问题。 首先是选择输入

<select id="position" class="toNextWithSimulateTab" name="position" form="athlets_data" style="width:175px">
     <option name="1">1</option>
     <option name="2">2</option>
     <option name="3">3</option>
     <option name="4">4</option>
</select>

当选择输入为焦点时,我按下ctr和右箭头(由脚本定义转到下一个输入)将值更改为下一个输入,然后聚焦下一个输入。 我想选择一个选项然后用ctrl和向右箭头转到下一个输入。

第二个问题:

我已经将我的表单拆分为两个div右列和左列,所以当我点击左边的div输入并使用我的脚本(ctrl和右箭头)来标签输入时,转到上一次输入时无法移动到第一个输入右边的div。

有什么想法吗?

提前致谢

<div id="home" class="tab-pane fade in active row" style="padding-left: 20px;">
    <h3 style="color:#06F">Στοιχεία ασθενή</h3>
    <br>
    <form action="add_new_patient_card.php" id="patient_data" class="redirected_form" method="post">
    <div id="patient_data_left_column" class="col-md-5">
        <a>Lastname: </a>
        <input id="lastname" type="text" class="toNextWithSimulateTab" name="lastname" value="">
        <br>
        <br>
        <a>Firstname: </a>
        <input id="firstname" type="text" class="toNextWithSimulateTab" name="firstname" value="">
        <br>
        <br>
        <a>Fathers name: </a>
        <input id="fathersname" type="text" class="toNextWithSimulateTab" name="fathersname"  />
        <br>
        <br>
        <a>Position: </a>
        <select id="position" class="toNextWithSimulateTab" name="position" form="athlets_data" style="width:175px">
            <option name="1">1</option>
            <option name="2">2</option>
            <option name="3">3</option>
            <option name="4">4</option>
</select>
        <br>
        <br>
        <a>AMA: </a>
        <input id="ama"  type="text" class="toNextWithSimulateTab" name="ama"  />
        <br>
        <br>
        <a>Birthday: </a>
        <input id="bday" type="date" class="toNextWithSimulateTab" name="bday" style="width:175px"  />
        <br>
        <br>
        <a>Sex: </a>
        <select id="sex" class="toNextWithSimulateTab" name="sex" form="patient_data" style="width:175px">
            <option name="male">male</option>
            <option name="female">female</option>
        </select>
        <br>
        <br>
    </div>

    <div id="patient_data_right_column" class="col-sm-5">
        <a>Phone: </a>
        <input id="phone" type="text" class="toNextWithSimulateTab" name="phone" value="">
        <br>
        <br>
        <a>Mobile: </a>
        <input id="mobile" type="text" class="toNextWithSimulateTab" name="mobile" value="">
        <br>
        <br>
        <a>Fax: </a>
        <input id="fax" type="text" class="toNextWithSimulateTab" name="fax" value="">
        <br>
        <br>
        <a>Email: </a>
        <input id="email" type="text" class="toNextWithSimulateTab" name="email" value="">
        <br>
        <br>
        <a>Address: </a>
        <input id="address" type="text" class="toNextWithSimulateTab" name="address" value="">
        <br>
        <br>
        <a>City: </a>
        <input id="city" type="text" class="toNextWithSimulateTab" name="city" value="">
        <br>
        <br>
        <a>Country: </a>
        <input id="country" type="text" class="toNextWithSimulateTab" name="country" value="">
    </div>
</form>
  </div>

1 个答案:

答案 0 :(得分:1)

OUFF那么难,但我在这里做了hihihi Demo

$(".toNextWithSimulateTab").keydown(function(event)
{
    if( event.ctrlKey && ( event.which === 39 ) ) 
    {
        event.preventDefault();
        $(this).next(".toNextWithSimulateTab").focus();
        if($(this).is(":last-child") && $(this).parent().attr("id") == "patient_data_left_column")
        {
            $(this).parent().next().find(".toNextWithSimulateTab:first-child").focus();
        }
    }
});