首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript Word和characterCount验证

Javascript Word和characterCount验证
EN

Stack Overflow用户
提问于 2015-04-30 16:33:01
回答 2查看 684关注 0票数 0

我有一个文本区$.questionField,其中用户需要输入至少5个单词和20个字符。当达到此最小值时,提交按钮将变为活动状态。这是可行的。

还有一个word $.wordCounter和character $.characterCounter计数器,向用户显示剩余的单词/字符。这只起到了部分作用:

当达到阈值时,只有第一个字/character计数器的颜色变为绿色。我假设下面的if代码结构需要修改/扩充以适应这两种情况(如果首先达到了单词或字符的限制)。

有没有更好的方法来用javascript (或下划线)来实现这一点?

代码语言:javascript
复制
$.questionField.addEventListener("change", function(e){
    var words = $.questionField.value.split(" ").length;
    var characters = $.questionField.value.replace(/[^A-Z]/gi, "").length;
    console.log("characters " + characters);
    if (words > 5 && characters > 20) {
        if (OS_IOS) {
            $.submitIconSubmitPage.touchEnabled = true;
            $.submitIconSubmitPage.color = "green";
        }
    } else if (words <= 5 || characters <= 20){
                if (words <=5) {
                    $.wordCounter.color = "red";
                    $.wordCounter.text = 5 - words;
                } else {
                    $.wordCounter.color = "green";
                }
                if (characters <=20) {
                    $.characterCounter.color = "red";
                    $.characterCounter.text = 20 - characters;
                } else {
                    $.characterCounter.color = "green";
                }

            if (OS_IOS) {
                $.submitIconSubmitPage.touchEnabled = false;
                $.submitIconSubmitPage.color = "red";
            }
        }
});
EN

回答 2

Stack Overflow用户

发布于 2015-04-30 16:55:06

你的代码似乎是根据大写字母或字数进行验证,并根据长度设置字符的颜色?

如果使用jQuery,我会做类似this的事情。但是如果你不使用jQuery,它可能不能满足你的需求。

代码语言:javascript
复制
$('#myInput').on('keyup', function(event){
    var val = $('#myInput').val().trim(),
        numWords = val.split(' ').length,
        numCharacter = val.replace(/\s/g, '').length;

    $('.characterCounter').text(20-numCharacter + ' characters remaining.');
    $('.wordCounter').text(5 - numWords + ' words remaining.');

    if(numWords >= 5 || numCharacter >= 20){
        $('#myInput').addClass('valid');
        $('#mySubmit').addClass('valid');
        $('.remaining').hide();
    } else {
        $('.remaining').show();
        $('#myInput').removeClass('valid');
        $('#mySubmit').removeClass('valid');
    }
});
票数 0
EN

Stack Overflow用户

发布于 2015-04-30 16:55:59

可以对其进行适当的整理,但本质上您需要的内容如下:

代码语言:javascript
复制
question.on('keyup', function(){
    var words = question.val().split(/\s*/).length;
    var characters = question.val().toLowerCase().replace(/[^\w]/g, '').length;

    wordCount.text(words);
    characterCount.text(characters);

    wordCount.toggleClass('red', words < 5);
    characterCount.toggleClass('red', characters < 20);

    if(words >= 5 && characters >= 20) {
        submit.removeAttr('disabled');
    } else {
        submit.attr('disabled', 'disabled');
    }
});

这是一个实际演示它的JSfiddle。不过,您需要在OS_IOS工作中添加https://jsfiddle.net/mwta17ph/

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

https://stackoverflow.com/questions/29962802

复制
相关文章

相似问题

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