javascript - 使用 Parsley 禁用输入类型编号的 'step' 验证行为

标签 javascript parsley.js

使用 Parsley.js html5 验证时可以禁用输入类型数字的“步骤”验证(无需更改类型文本......)

<input type="number" step="100" min="0" />

如果我将“51”放入此字段,验证将失败,因为它不是 100 的倍数(步长)。如何禁用此默认行为?

最佳答案

/*
  jQuery Optional Number Step

Version: 1.0.0
 Author: Arthur Shlain
   Repo: https://github.com/ArthurShlain/JQuery-Optional-Step
 Issues: https://github.com/ArthurShlain/JQuery-Optional-Step/issues
*/
(function ($) {

    $.fn.optionalNumberStep = function (step) {
        var $base = $(this);

        var $body = $('body');

        $body.on("mouseenter mousemove", '[data-optional-step]', function () {
            $(this).attr("step", $(this).attr('data-optional-step'));
        });

        $body.on("mouseleave blur", '[data-optional-step]', function () {
            $(this).removeAttr("step");
        });

        $body.on("keydown", '[data-optional-step]', function () {
            var key = event.which;
            switch (key) {
                case 38: // Key up.
                    $(this).attr("step", step);
                    break;

                case 40: // Key down.
                    $(this).attr("step", step);
                    break;
                default:
                    $(this).removeAttr("step");
                    break;
            }
        });

        if (step === 'unset') {
            $base.removeAttr('data-optional-step');
        }

        if ($.isNumeric(step)) {
            $base.attr('data-optional-step', step);
        }

    }

}(jQuery));

jQuery(function() {
  $('.optional-step-100').optionalNumberStep(100);
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="container mt-5">
  <h1 class="h3">JQuery Optional Number Step</h1>
  <div class="form-group" style="max-width: 300px">
    <label>Example</label>
    <input type="number" class="form-control optional-step-100" value="0">
    <button type="submit" class="btn btn-primary mt-2">Submit</button>
    <small id="emailHelp" class="form-text text-muted">Dynamic step for this field is 100
      <br>You can specify any numeric value on keyboard. 
      <br>HTML5 step validation will not be applied.</small>
  </div>
  <a class="btn btn-dark btn-sm" href="https://github.com/ArthurShlain/JQuery-Optional-Step" target="_blank">View on GitHub</a>
</form>

关于javascript - 使用 Parsley 禁用输入类型编号的 'step' 验证行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46521125/

相关文章:

javascript - 使用 Mozilla React 表单重新排序表单控件

javascript - Google Oauth 没有获得刷新 token

javascript - 表格:submit unable to prevent default with return false

javascript - 基于欧芹验证显示 JqueryUI 工具提示

javascript - parsley.js - 无需验证即可手动显示消息

javascript - 在悬停 css 上动画 div - 可能的循环

javascript - NW.js + PDF.js : How to provide an URL to pdf. js?

javascript - 如何使用 parsley js 只验证选定的字段

jquery - 使用欧芹提交的自定义事件

javascript - 为什么我在使用语音 RSS api 时遇到一些问题