name-select-form.blade.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. ?>
  3. <style type="text/css">
  4. </style>
  5. <div class="layui-form-item {{ $errors->has('device_name_id') ? 'has-error' : '' }}">
  6. <label class="layui-form-label" style="padding: 0px;">设备名称</label>
  7. <div class="layui-input-block">
  8. <select name="device_name_id" lay-filter="device_name_id">
  9. @foreach($options as $option)
  10. <option value="{{$option->value}}" {{$option->value == $device_name_id ? 'selected' : ''}}>{{$option->text}}</option>
  11. @endforeach
  12. </select>
  13. @if($errors->has('device_name_id'))
  14. <span class="help-block">{{ $errors->first('device_name_id') }}</span>
  15. @endif
  16. </div>
  17. @if($errors->has('device_name_id'))
  18. <span class="help-block">{{ $errors->first('device_name_id') }}</span>
  19. @endif
  20. </div>
  21. @if(!isset($hide_spec))
  22. <div class="layui-form-item {{ $errors->has('spec_id') ? 'has-error' : '' }}">
  23. <label class="layui-form-label" style="padding: 0px;">规格型号</label>
  24. <div class="layui-input-block">
  25. <select name="spec_id" lay-filter="spec_id">
  26. </select>
  27. @if($errors->has('spec_id'))
  28. <span class="help-block">{{ $errors->first('spec_id') }}</span>
  29. @endif
  30. </div>
  31. </div>
  32. @endif
  33. <script>
  34. $(function() {
  35. layui.use(['form'], function() {
  36. let form = layui.form;
  37. let device_names = JSON.parse('{!! $options !!}');
  38. let specs = [];
  39. let device_name_id = '{{ $device_name_id }}';
  40. let spec_id = '{{ $spec_id }}';
  41. let hide_spec = '{{ isset($hide_spec) ? "yes" : "no" }}';
  42. // console.log(hide_spec)
  43. form.on('select(device_name_id)', function(data) {
  44. device_name_id = data.value;
  45. spec_id = '';
  46. updateSpec()
  47. });
  48. updateSpec();
  49. function updateSpec() {
  50. let name_index = getIndex(device_names, device_name_id);
  51. specs = device_names[name_index].specs;
  52. let options = '';
  53. for(let i = 0; i < specs.length; ++i) {
  54. options += '<option value=' + specs[i].value + (parseInt(specs[i].value) === parseInt(spec_id) ? ' selected' : '') + '>' + specs[i].text + '</option>'
  55. }
  56. $("select[name='spec_id']").html(options);
  57. form.render('select');
  58. }
  59. function getIndex(list, id) {
  60. id = parseInt(id);
  61. for(var i = 0; i < list.length; ++i) {
  62. if(list[i].value === id) return i;
  63. }
  64. return 0;
  65. }
  66. })
  67. })
  68. </script>