首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery验证工作,但不是正确的方法。

jQuery验证工作,但不是正确的方法。
EN

Stack Overflow用户
提问于 2014-09-17 08:26:38
回答 2查看 71关注 0票数 0

我有一个简单的jQuery验证,我需要在我的网站上的不同页面上检查所需的字段。

目前,我有一个工作的下列代码。我检查函数check_inputs(),但我认为这不是正确的方法。

代码语言:javascript
复制
// Check the required fields
function check_inputs() {
    var errors = false;
    jQuery('#wiz-action .required').each(function () {
        var input = jQuery(this);
        if (input.val().length < 1) {
            input.addClass('error');
            errors = true;
        } else {
            input.removeClass('error');
            errors = false;
        }
    });

    if (errors == false) {
        return true;
    }
}

// Check fields on blur
$('#wiz-action input.required').blur(function () {
    var input = $(this);
    input.removeClass('error');
    if (input.val().length < 1) {
        input.addClass('error');
    } else if (!input.val().match(/^\d+$/)) {
        input.addClass('error');
    }
});


// Check fields by clicking "next" link 
$('#next-link').click(function (e) {

    if (check_inputs() == true) {
        // Do something

    } else {
        $('.error-message').fadeOut(200).fadeIn(200);
    }
});
代码语言:javascript
复制
.error {
    border: 1px solid #f00;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<div id="wiz-action">
    <input type="text" class="required">
    <input type="text" class="required"> 
    <a id="next-link" href="#">Next</a> 
</div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-17 09:38:12

我创造了一个小提琴,并改变了一些事情。http://jsfiddle.net/5z8r166v/3/

我已经为您单击元素时创建了一个焦点。在这里,我移除错误类。这只是一个预先的决定,但我让它删除红线。

当单击out (模糊)时,我检查是否有值,如果其中没有值,则设置error类。

我使用== "“来检查它是否是空的,而不是长度。这里你必须计算字符串的长度。

只是在性能上要好一点。

我知道你不会注意到它,因为它只有毫秒+我发现它更容易阅读。

在下一次单击中,我添加了

代码语言:javascript
复制
e.preventDefault();

它阻止按钮的默认操作。不知道你想做什么,但知道什么时候使用它。

你增加了regex。这可能是你所允许的角色所需要的。您忘了在next按钮单击时检查它。也是在那里加的。

实际上,next按钮单击循环时出现了错误。是你干的

代码语言:javascript
复制
  if (input.val().length < 1) {
        input.addClass('error');
        errors = true;
    } else {
        input.removeClass('error');
        errors = false;

但是,如果最后一个文本框是好的,并且仍然有一个空的或无效的文本框,变量就会被false覆盖,这使得它在next按钮中继续单击,这是不正确的。

也要使用好的变量名。

我使用的是hasError而不是错误,因为它是布尔类型。

此外,您还返回了变量,如下所示

代码语言:javascript
复制
if (errors == false) {
    return true;
}

但是因为它是布尔值,所以您只需要返回值。

如果要在发送之前反转布尔值,请使用

代码语言:javascript
复制
return !hasError 

但在这种情况下它是不必要的。

最后但并非最不重要的一点:您选择了OnLoad,但是OnDomready就足够了,因为您不处理图像。

我希望这能帮到你。

票数 0
EN

Stack Overflow用户

发布于 2014-09-17 09:03:17

代码语言:javascript
复制
// Check the required fields
function check_inputs() {
    var errors = false;
    $('#wiz-action .required').each(function () {
        var input = $(this);
        if (input.val().length < 1) {
            input.addClass('error');
            errors = true;
        } else {
            input.removeClass('error');
            errors = false;
        }
    });

    if (errors == false) {
        return true;
    }
}

// Check fields on change
$('#wiz-action input.required').change(function () {
    var input = $(this);
    input.removeClass('error');
    if (input.val().length < 1) {
        input.addClass('error');
    } else if (!input.val().match(/^\d+$/)) {
        input.addClass('error');
    } else {
        input.removeClass('error');
    }
    check_inputs();
});


// Check fields by clicking "next" link 
$('#next-link').click(function (e) {

    if (check_inputs() == true) {
        // Do something

    } else {
        $('.error-message').fadeOut(200).fadeIn(200);
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25885692

复制
相关文章

相似问题

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