You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现按下Enter键时聚焦下一个输入框(适配动态增删输入字段场景)

解决方案:按下Enter自动聚焦下一个输入框

没问题,这需求很实用,我帮你调整代码实现功能。下面是完整的修改后代码,我会在后面说明关键改动点:

完整代码

<html>
<head>
<title>Dynamically Add or Remove input fields in PHP with JQuery</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<br />
<br />
<h2 align="center">Dynamically Add or Remove input fields in PHP with JQuery</h2>
<div class="form-group">
<form name="add_name" id="add_name">
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td>
<td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>
</tr>
</table>
<input type="button" name="submit" id="submit" class="btn btn-info" value="Submit" />
</div>
</form>
</div>
</div>
<script>
$(document).ready(function(){
    var i=1;
    // 页面加载完成后自动聚焦第一个输入框
    $('.name_list').first().focus();

    $('#add').click(function(){
        i++;
        $('#dynamic_field').append('<tr id="row'+i+'"><td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td><td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
        // 新增输入框后自动聚焦到它
        $('#row'+i+' .name_list').focus();
    });

    $(document).on('click', '.btn_remove', function(){
        var button_id = $(this).attr("id");
        $('#row'+button_id+'').remove();
    });

    // 绑定Enter键事件,实现跳转到下一个输入框
    $(document).on('keydown', '.name_list', function(e) {
        // 判断是否按下Enter键(keyCode 13)
        if(e.keyCode === 13) {
            e.preventDefault(); // 阻止默认的表单提交行为
            // 获取当前输入框的下一个同级输入框
            var nextInput = $(this).closest('tr').next('tr').find('.name_list');
            // 如果存在下一个输入框,就聚焦它
            if(nextInput.length > 0) {
                nextInput.focus();
            } else {
                // 如果是最后一个输入框,聚焦到添加按钮(可根据需求修改)
                $('#add').focus();
            }
        }
    });

    $('#submit').click(function(){
        $.ajax({
            url:"name.php",
            method:"POST",
            data:$('#add_name').serialize(),
            success:function(data) {
                alert(data);
                $('#add_name')[0].reset();
                // 重置后重新聚焦第一个输入框
                $('.name_list').first().focus();
            }
        });
    });
});
</script>
</body>
</html>

关键改动说明

  • 页面加载自动聚焦:在页面初始化完成后,直接让第一个输入框获得焦点,省去用户手动点击的步骤。
  • 新增输入框自动聚焦:点击添加按钮后,自动把光标定位到新生成的输入框里,提升输入流畅度。
  • Enter键跳转逻辑:通过事件委托给所有输入框绑定按键事件,按下Enter时:
    • 先阻止默认的表单提交行为,避免页面意外刷新;
    • 查找当前输入框的下一个同级输入框,如果存在就聚焦过去;
    • 如果已经是最后一个输入框,默认聚焦到添加按钮,你也可以根据需求改成聚焦提交按钮或者保持当前焦点。
  • 提交后重置聚焦:表单提交并重置后,重新聚焦到第一个输入框,方便用户再次开始输入。

内容的提问来源于stack exchange,提问作者Dingky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:22:30