Jquery没有检测到多选表单元素

时间:2017-06-15 11:33:15

标签: php jquery html5 laravel-5.4

<select class="js-example-basic-multiple categories  form-control" name="categories[]" style="width: 100%" multiple="multiple">
    <option value=""></option>
    <option value="fresher">fresher</option>
    <option value="experienced"> experienced</option>
</select>

表单中的多选控件。

console.log($("#new-job-form").serialize());

显示控制台中的所有其他表单元素。

_token=5eDJlHTMLybD73xyW4C0wdXjYrsL3xJa5CsxrwYS&_method=POST&company_id=1&job_title=

当我删除multiple="multiple"时,正在检测name =“categories []”元素。

此外,如果我在类别中选择一个值,那么也会检测到元素。

_token=5eDJlHTMLybD73xyW4C0wdXjYrsL3xJa5CsxrwYS&_method=POST&company_id=1&job_title=&categories%5B%5D=

现在我无法验证控制器中的类别字段,因为请求数组中没有类别键。

'categories.*' => 'required',

3 个答案:

答案 0 :(得分:0)

你需要检查那些东西。

- Clear view cache.
- Your jquery is included in head tag.?
- Make some changes in form and check the changes is effect in web console Element Tab.?
- check Form id and jQuery select element id is same.?
- Put dd($request); in your controller method and check parameter is received.?

这是我的代码,此代码经过测试并在我的PC上运行。

1。)在web.php

中定义路线
Route::post('/home', 'HomeController@store')->name('home.store');

2。)HTML表格

<form action="javascript:void(0)" method="post" id="form_sbtn">
    {{ csrf_field() }}
    <select class="js-example-basic-multiple categories  form-control" name="categories[]" style="width: 100%" multiple="multiple">
        <option value=""></option>
        <option value="fresher">fresher</option>
        <option value="experienced"> experienced</option>
    </select>
    <button name="sbtn" type="submit">Save</button>
</form>

3.)Ajax表单

<script type="text/javascript">    
$(document).ready(function(){
    $('input[name=sbtn]').click(function(e){
        e.preventDefalut();
        $.ajax({
            url : "{{ route('home.store') }}",
            method: 'POST',
            data : $("#form_sbtn").serialize(),
            success : function(response){
                console.log(response);
            },
            error : function(error){

            },
        });
    });
});
</script>

4.。控制器公共方法。

public function store(Request $request)
{
    dd($request);
}

答案 1 :(得分:0)

https://github.com/davidstutz/bootstrap-multiselect/issues/653

我认为这个问题还没有解决......

答案 2 :(得分:-2)

$("#new-job-form").validate({

        rules: {

              'categories[]': {
                  required: true,
              }
          },

          messages: 
          {
              'categories[]': {
                  required: "Please provide categories"
              }
          }
      });

试试这个