首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >欧芹验证器中带有enter键的next按钮

问欧芹验证器中带有enter键的next按钮
EN

Stack Overflow用户
提问于 2018-07-27 12:54:24
回答 1查看 367关注 0票数 0

我在两步表单中使用了欧芹验证包。

这是html:

代码语言:javascript
复制
<form action="#" method="POST"  autocomplete="off" class="enter-form" data-parsley-validate="" data-parsley-focus="first">
    <div class="form-group form-section">
        <label for="email"><b>email or phone number:</b></label>
        <input type="text" title="enter email or phone number" autofocus="autofocus" tabindex="1" class="form-control" id="email" required="" data-parsley-emailorid="" />
    </div>
    <div class="form-group form-section">
        <label for="pwd"><b>password:</b></label>
        <input type="password" title="enter password" tabindex="2" class="form-control" id="pwd" required="" />
    </div>

    <div class="form-navigation">
        <button type="button" class="previous btn btn-primary pull-left">
            previous &gt;
        </button>
        <button type="button" class="next btn btn-primary pull-right" id="nextBtn">
            &lt; next
        </button>
        <button type="submit" class="btn btn-rang pull-right">
            enter
        </button>
        <span class="clearfix"></span>
    </div>

</form>

这是用于多步验证的java脚本:

代码语言:javascript
复制
$(document).ready(function () {
    var $sections = $('.form-section');

    function navigateTo(index) {
        $sections
        .removeClass('current')
        .eq(index)
        .addClass('current');
        $('.form-navigation .previous').toggle(index > 0);
        var atTheEnd = index >= $sections.length - 1;
        $('.form-navigation .next').toggle(!atTheEnd);
        $('.form-navigation [type=submit]').toggle(atTheEnd);
    }

    function curIndex() {
        return $sections.index($sections.filter('.current'));
    }

    $('.form-navigation .previous').click(function() {
        navigateTo(curIndex() - 1);
    });

    $('.form-navigation .next').click(function() {
        $('.enter-form').parsley().whenValidate({
            group: 'block-' + curIndex()
        }).done(function() {
            navigateTo(curIndex() + 1);
        });
    });

    $sections.each(function(index, section) {
        $(section).find(':input').attr('data-parsley-group', 'block-' + index);
    });
    navigateTo(0);
});

$(document).ready(function () {
    var dummyEmail = $('<input data-parsley-type="email">').parsley();
    var dummyDigits = $('<input data-parsley-pattern="\[0-9]{11}">').parsley();

    window.Parsley.addValidator('emailorid', {
        validateString: function(data) {
            return dummyDigits.isValid(true, data) || dummyEmail.isValid(true, data);
        },
        messages: {
            en: "Is neither a nine digit long number nor a valid email address"
        }
    });
});

在第一步中,我无法使用"enter“键进行下一步。因此,我编写了这段代码来触发"enter“键上的"#nextBtn”:

代码语言:javascript
复制
$(document).ready(function () {
    var input = document.getElementById("email");

    input.addEventListener("keyup", function(event) {
        event.preventDefault();
        if (event.keyCode === 13) {
            document.getElementById("nextBtn").click();
        }
    });
});

但我现在有麻烦了。当我使用"enter“键进入下一步时,它并不关注密码输入。我的问题是:在使用"enter“键进入下一步时,如何将重点放在密码输入上?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 13:02:04

您可以通过以下方式获得密码输入:

document.getElementById("pwd").focus();

或者使用jQuery:

$('#pwd).focus();

因此,当您的JavaScript代码在按enter时检测到时,只需将html元素聚焦,并使用.focus()函数即可。

Jquery:https://api.jquery.com/focus/

JS:https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51558411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档