【问题标题】:Laravel, jQuery - return to bracket notation after validation in Laravel (dot to bracket notation in jQuery)Laravel, jQuery - 在 Laravel 中验证后返回括号表示法(jQuery 中的点到括号表示法)
【发布时间】:2016-01-10 14:10:05
【问题描述】:

使用 Laravel 5.1。

我有一个请求,我在其中进行表单输入验证。我调用.ajax 方法并接收JSON 输出。

类似:

{
    "category.subcategory_one" : ["This field must be at least 3 characters long"],
    "category.subcategory_two" : ["This field must be at least 5 characters long"],
    ...
}

但是经过验证的输入看起来像这样

<input name="category[subcategory_one]" >
<input name="category[subcategory_two]" >

但现在我无法将 CSS 类添加到未正确填充的输入中,因为在我的 jQuery 中我有点表示法。

有没有简单的方法将category.subcategory_one 转换为category[subcategory_one]

【问题讨论】:

    标签: javascript php jquery laravel laravel-5.1


    【解决方案1】:

    需要将它们解析为name 格式

    var errors ={
        "category.subcategory_one" : ["This field must be at least 3 characters long"],
        "category.subcategory_two" : ["This field must be at least 5 characters long"],
        ...
    }
    
    $.each(errors, function key, value){
      var name = key;
      if(key.indexOf('.') >-1){
         name =  key.split('.').join('[') +']';
      }
      $('[name='+name+']').append( $('<span>',{class:'error', text: value.join('<br>') })
    
    });
    

    【讨论】:

    • 就可以了,感谢您的回答。但是,这不适用于category.subcategory.subsubcategory 的多个嵌套。我的代码中没有类似的东西,但我应该担心吗?
    • 如果需要修改
    • 是否可以执行key.split('.').join(']['); 之类的操作,然后先删除],最后删除[?如果是这样,你能给我提供那个代码吗?如果你不知道,我可以谷歌它。
    • 如果拆分数组中有超过 2 个部分,则可能更好地计算部分并循环它们以创建字符串
    • 另一件非常有用的事情是添加与名称段相同的类......然后只需添加一个点前缀来创建一个类选择器。
    【解决方案2】:

    您需要对包含括号符号的选择器中的特殊字符进行转义。

    if (key.indexOf('.') !== -1){
        key =  key.split('.').join('\\[') +'\\]';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多