【问题标题】:JavaScript script to validate minimum words entered in input用于验证输入中输入的最少单词的 JavaScript 脚本
【发布时间】:2014-07-09 06:15:22
【问题描述】:

我真的不知道该怎么做。所以我需要一个 JavaScript 脚本来查看联系表单字段(问题名称),并确保在提交之前它有多个单词。

<input type="text" name="question[name]" id="question_name">

我确实搜索了很多,找到了一些解决方案,但没有一个真正有效。

你能帮帮我吗?

【问题讨论】:

  • 您是否使用 JavaScript 提交表单?您能向我们展示更多您的代码吗?
  • 这看起来不是一个有效的问题。请展示您迄今为止尝试过的内容(就源代码而言)、您得到的结果以及这些结果与预期结果有何不同。否则很难在 StackOverflow 上进行任何建设性的对话。它看起来更像是一个租用编码器或其他不是本网站目的的问题。
  • 一个词是什么? i 符合条件吗?
  • 这是测试至少 2 个单词的正则表达式:@"^[a-zA-Z]{2,40}\s*[a-zA-Z]{2,40}*$"(假设 1 个字符不是单词)
  • 一般的想法包括解析字符串,在空格上分割(并从中创建一个字符串数组),然后计算数组中元素的数量。你有没有尝试过这样的事情?

标签: javascript input contact minimum


【解决方案1】:
<input type="text" name="question[name]" id="question_name" onblur="this.value.split(' ').length < 2 ? alert('you need more words here') : '';" />

jsfiddle


编辑以改进它:

HTML 代码:

<p>
    <input type="text" name="question[name]" id="question_name" onblur="CheckErrors.Name(this);" />
    <span class="error"></span>
</p>

JS代码:

var CheckErrors = {

    Config: {
        Error_Strings: {
            Name: 'you need more words here',
            Email: 'the email looks invalid'
            //, ....
        }
    },

    Name: function(element){
        try{
            var error_target = element.nextElementSibling;
            if( element.value.split(' ').length < 2 ){
                error_target.textContent = this.Config.Error_Strings.Name;
            }
            else{
                error_target.textContent = '';
            }
        }
        catch(e){
            console.log(e.stack);
        }
    }

    //, Email: function(element){}....
};

【讨论】:

  • 我想这就是解决方案。我可以问你如何实现更好的方法,但“更好”我的意思是不使用警报。例如。文本显示在输入表单的右侧?
  • 当然,我编辑我的帖子是为了向您展示一个简单的面向对象的解决方案。 check jsfiddle
【解决方案2】:

这里有一个小提琴http://jsfiddle.net/6q8jJ/4/

html

<input type="text" name="question[name]" id="question_name">
<button onclick="validate();">send</button>

js

function validate(){

    var error = 0,
    el = document.getElementById("question_name");

    if(el.value.replace(/\s+/g, '').length <= 1){ //get value, remove all whitespace, get length
        error++;
    }

    /*
    * etc
    * your other validation
    */


   if(error > 0) {
       alert('mhh...');
   }else{
       alert('ok send for real');
   }

}

【讨论】:

  • 嗯,这个脚本正在检查字母而不是单词。因此,如果您输入“a”,它不会通过,但如果您输入“aa”,它就会通过。检查单词的任何解决方案?
  • aa 在 js 中是一个词(也许在英语中没有意义,但在某些语言中它可能存在)。如果您必须检查真实单词(具有含义的现有单词),则需要使用数据库或服务对其进行验证。如果你只有几个单词,你可以将它们存储到一个数组中,因此脚本需要更改。
猜你喜欢
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多