【问题标题】:JQuery Validation is not working in save button click handlerJQuery Validation 在保存按钮单击处理程序中不起作用
【发布时间】:2017-12-25 03:59:20
【问题描述】:

我已经尝试了几个小时来进行验证,但无济于事。我在 input 元素中包含了 name 属性。脚本源也包括在内。验证方法也已​​被解雇。内容未经验证。谁能看到我的代码有什么问题?提前致谢。 圣诞快乐!

我的 HTML 代码

<input type="text" id="sessionSynopsisNameInput" name="sessionSynopsisNameInput" 
  class="form-control input-group-lg" maxlength="70" placeholder="Session Name" value=""/>
<div class="errMsg"></div>

我的 Javascript 代码

setupFormValidationRules();
function setupFormValidationRules() {
    jQuery.validator.addMethod('lettersonly', function (value, element) {
        return this.optional(element) || /^[a-zA-Z ]*$/.test(value);
    });

    $('#dataForm').validate({
        rules: {
            sessionSynopsisNameInput: {
                required: true,
                lettersonly: true
            }
        },
        messages: {
            sessionSynopsisNameInput: {
                required: 'Please enter Session Synopsis Name',
                lettersonly: 'Only spaces and alphabets are allowed'
            }
        }
    });
}

在保存按钮单击处理程序中调用 validate 方法。

$('#saveButton').on('click', function () {
    $('#dataForm').validate();
});

这些是我包含的脚本源

<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation/dist/additional-methods.js"></script>

【问题讨论】:

  • 我建议在 input 元素中添加 required 或 letteronly 属性
  • @R.S.没关系,其实通过这个方法我们也可以自定义消息。
  • @R.S.在规则中sessionSynopsisNameInput 是 id,所以它只会验证这个 id
  • 好的,谢谢

标签: javascript jquery html validation


【解决方案1】:

lettersonly 已经存在于其他方法我必须更改名称 lettersonly1 并且它工作正常,您可以查看示例 p>

setupFormValidationRules();

function setupFormValidationRules() {      
    $.validator.addMethod('lettersonly1', function (value, element) {
        return this.optional(element) || /^[^-\s][a-zA-Z\s-]+$/.test(value);
    });

    $('#dataForm').validate({
        rules: {
            sessionSynopsisNameInput: {
                required: true,
                lettersonly1: true
            }
        },
        messages: {
            sessionSynopsisNameInput: {
                required: 'Please enter Session Synopsis Name',
                lettersonly1: 'Only spaces and alphabets are allowed'
            }
        }
    });
}

$(function(){
    $('#dataForm').validate()
})

$("#dataForm").on("submit", function(){
    if($(this).valid()){
        console.log('submit');
        $(this).submit();
    }
    
    return false;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/additional-methods.js"></script>
<form method='post' action='#' id = 'dataForm'>
    <input type="text" id="sessionSynopsisNameInput" name="sessionSynopsisNameInput" 
      class="form-control input-group-lg" maxlength="70" placeholder="Session Name" value=""/>
    <div class="errMsg"></div>
    <button id='saveButton' name='saveButton' type='submit'>Save</button>
</form>

【讨论】:

  • 我不知道为什么表单仍然允许我发布空格。即使调用了 lettersonly1,但是当我在同一页面中第二次提交时,它允许提交。
  • 我已经更新了我的代码请更改按钮类型以提交如果您已将其定义为按钮并将您的表单验证方法更改为就绪功能请进行更改然后检查
  • 您好,很抱歉回复晚了。不管用。显示了错误消息,但它仍然允许接受空格和值..
  • 那么您需要更改不应该接受空格的正则表达式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
相关资源
最近更新 更多