Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载时将所选选项设置为PHP多选输入 我试图从数据库中获取数据,将值填充到multiselect字段中 我试图在这个multiselect字段中选择一些值_Javascript_Php_Laravel - Fatal编程技术网

Javascript 加载时将所选选项设置为PHP多选输入 我试图从数据库中获取数据,将值填充到multiselect字段中 我试图在这个multiselect字段中选择一些值

Javascript 加载时将所选选项设置为PHP多选输入 我试图从数据库中获取数据,将值填充到multiselect字段中 我试图在这个multiselect字段中选择一些值,javascript,php,laravel,Javascript,Php,Laravel,我怎样才能做到这一点 提前谢谢。我认为,如果可能的话,你应该用javascript来代替。就延迟而言,这几乎不值得注意,而且不会浪费服务器端的周期。下面是我最近一个项目的一个例子。另外,如果您在select上内联声明onchange事件,它将在函数执行后立即为您调用它 <?php $arrayData = myModel::all(); foreach($arrayData as $arrayList){ $pureData = array_add($pureData, $array

我怎样才能做到这一点


提前谢谢。

我认为,如果可能的话,你应该用javascript来代替。就延迟而言,这几乎不值得注意,而且不会浪费服务器端的周期。下面是我最近一个项目的一个例子。另外,如果您在select上内联声明onchange事件,它将在函数执行后立即为您调用它

<?php
$arrayData = myModel::all();
foreach($arrayData as $arrayList){
   $pureData = array_add($pureData, $arrayList->elementValue, $arrayList->elementText);
}
echo Form::select('multiSelectName', $pureData, null, array());
?>
用法:


一种解决方案是获取所有可用选项和已选择的选项,然后确定它们是否匹配,并创建一个select元素,并将
选定的
参数设置为该元素

我不认为使用
表单
助手就可以做到这一点 (我知道只需要一个值就可以完成,但我没有尝试使用多个值)

例子 获取所有可用选项(尝试获取一些唯一标识,如id)

$all_options=Model::list('id','name')

我正在使用lists方法,该方法将返回一个数组,其中所有可用id作为值,名称作为数组的键

然后获取所有选定的值

$ready_selected_options=Model::with('related_Model')->列表('id','name')

(如果您正在使用像这样有说服力的东西来获取相关ID,则可以使用)

那么在你看来,

$('select.select-onload').each(function(index){
    if(typeof $(this).attr('data-selected') !== 'undefined'){
        if($(this).attr('data-selected') == ''){
            return false;
        }
        $(this).val( $(this).attr('data-selected') );
        //we may have a callback. lets manually invoke it.
        if(typeof $(this).attr('onchange') !== 'undefined'){
            var callback = $(this).attr('onchange').replace('();','').trim();
            window[callback].call(window);
        }
    }
});

@foreach($name=>$id的所有_选项)
@if(在数组中($id,$ready\u selected\u options))
{{$name}
@否则
{{$name}
@恩迪夫
@endforeach

我没有用完全相同的方法,但您通过解决方案启发了我。谢谢。没问题,如果你认为这个答案适合作为解决方案,请接受:)浪费周期。我的解决方案也会起同样的作用,并将繁重的工作留给客户。我将其与细枝模板引擎一起使用,尽管我对企业级前端进行了编程。所有服务器端的成本必须始终保持不变。是的,你是对的,但是如果用户禁用了javascript怎么办?这种情况不太常见,但可能会发生happen@HarryGeo谁在乎,现在是2015年。如果他们已经禁用了javascript,那么他们可能不会有什么好结果
<select multiple>
@foreach($all_options as $name => $id)
    @if(in_array($id,$already_selected_options))
       <option value="{{$id}}" selected>{{$name}}</option>
      @else
       <option value="{{$id}}">{{$name}}</option>
    @endif
@endforeach
<select>