javascript - jquery validate - 可以更改提交的字段值吗?

标签 javascript jquery jquery-validate

我有一个自定义方法

$.validator.addMethod("lettersandspaces", function(value, element) {
    var value = this.elementValue(element).replace(/\s+/g, ' ').trim();
    return this.optional(element) || /^[a-zA-Z][a-zA-Z\s]*$/i.test(value);
}, 'Your name may only contain letters');

这里我正在 trim 空白并仅用一个替换任何重复的空白。然后我进行验证以确保只有字母和空格。

是否可以将 trim 后的与表单一起提交,而不是用户输入的内容?

最佳答案

使用submitHandler您可以在提交表单之前进行任何操作,(form.submit())

请参阅下面的工作片段

$.validator.addMethod("lettersandspaces", function(value, element) {
    var value = this.elementValue(element).replace(/\s+/g, ' ').trim();
    return this.optional(element) || /^[a-zA-Z][a-zA-Z\s]*$/i.test(value);
}, 'Your name may only contain letters');

$(document).ready(function () {
    $("#form").validate({
        rules: {
            "name": {
                required: true,
                minlength: 5,
                lettersandspaces: true
            },
            "age": {
                required: true,
            }
        },
        messages: {
            "name": {
                required: "Please, enter a name"
            },
            "age": {
                required: "Please, enter your age",
            }
        },
        submitHandler: function (form) { // for demo
            var newName  = $("#name").val().replace(/\s+/g, ' ').trim()
            $("#name").val(newName);
            $(form).valid();
            alert("Name = '"+newName+"'");
            
            // comment return and uncomment form.submit(
            return false;  //form.submit();
        }
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/additional-methods.js"></script>

<form id="form" method="post" action="#">
    <label for="name">Name :</label>
    <input type="text" name="name" id="name" /><br><br>
    <label for="age">Age :&nbsp;&nbsp;&nbsp;</label>
    <input type="age" name="age" id="age" /><br><br>
    <button type="submit">Submit</button>
</form>

关于javascript - jquery validate - 可以更改提交的字段值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44435761/

相关文章:

javascript - 在 Meteor 的钩子(Hook)中更改 react 变量的值

javascript - 如何将 jQuery 代码转换为 Vanilla JS

javascript - 在对象内使用 'this' 值

jquery - 如何让不显眼的 jquery 远程验证器执行异步..?

jquery - 延迟 html 表单提交,直到 div 动画完成

javascript - 重新切换/重新添加 jquery 中变量的类

javascript - 单击全高元素到空白区域以添加类

javascript - 表单未得到验证

javascript - 如何创建像 Grouek 网站那样的滚动效果

jquery - 如何在Jquery验证规则中实现 "or"条件