问答

js表单序列化之后怎么判断部分值是否为空?

作者:admin 2021-08-11 我要评论

表单序列化之后的字符串为: name=老王email=1234@qq.comtell=1234company=老王text=咨询内容 现在想判断name、tell、text这三个字段是否为空,如果为空则跳出提...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

表单序列化之后的字符串为:name=老王&email=1234@qq.com&tell=1234&company=老王&text=咨询内容现在想判断name、tell、text这三个字段是否为空,如果为空则跳出提示,谢谢!
`$("#submit").click(function(){

      var data = $("#form").serialize();     
      var array = data.split('&');//把字符串按&号分隔成数组
      for(var i = 0; i < array.length; i++){
      var kwarr = array[i].split('=');//循环将数组中的每个子元素字符串用=号分隔
        if(kwarr[1]===null || kwarr[1] ===''){
           alert('请填写您的姓名');
           return false;
        }
      }`

上面这段代码运行有问题

###

建议是封装一个校验的function。如果只是一个地方用,只是校验几个字段不为空那也倒是不必那么麻烦。可以参考一下下面的代码。只是示例,想封装成一个校验的比较完美的工具库还有需要很多完善的地方,如果只是临时用一下比如像题目中所说的仅仅只是校验下不为空,那可以稍微简化下,总之就是理解原理

const validate = {
    required(value) {
        return Boolean(value);
    },
    maxlength(value, length) {
        return typeof value == 'string' ? value.length < length : false;
    }
}


function validateFormData(rules, str) {
    const data = str.split('&').reduce((res, item) => {
        const kv = item.split('=');
        res[ kv[0] ] = kv[1];
        return res;
    }, {})
    const invalides = rules.filter(({key, rule}) => {
        const value = data[key];
        return !Object.keys(rule).every(method => validate[method](value, rule[method]));
    })
    return invalides;
}

validateFormData([{
    key: 'name',
    rule: {
        required: true,
    },
    message: '名字不能为空'
}], 'name=老王&email=1234@qq.com&tell=1234&company=老王&text=咨询内容')

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • js表单序列化之后怎么判断部分值是否为

    js表单序列化之后怎么判断部分值是否为

  • 根据已有数组顺序排序另一个Object的顺

    根据已有数组顺序排序另一个Object的顺

  • nodejs如何写搜索

    nodejs如何写搜索

  • hive运行UDF函数报错Hive Runtime Erro

    hive运行UDF函数报错Hive Runtime Erro

腾讯云代理商
海外云服务器