Laravel - Как изменить JQuery Проверка Я использовал создание лезвия для редактирования лезвия - PullRequest
0 голосов
/ 19 марта 2020

В моем проекте Laravel -5.8 я пытаюсь изменить значение загрузки в раскрывающемся текстовом поле при изменении.

Контроллер

public function findScore(Request $request)
{
  $userCompany = Auth::user()->company_id;
  $userEmployee = Auth::user()->employee_id;

  $identities                     = DB::table('appraisal_identity')->select('id')->where('company_id', $userCompany)->where('is_current', 1)->first()->id;      
  $child  = DB::table('appraisal_goal_types')->where('company_id', $userCompany)->where('id',$request->id)->first();

  $parentid  = DB::table('appraisal_goal_types')->select('parent_id')->where('company_id', $userCompany)->where('id',$request->id)->first()->parent_id;

   if(empty($child))
   {
       abort(404);
   }  
   $weightedscore = 0;
   $weightedscore = DB::table('appraisal_goals')->select(DB::raw("IFNULL(SUM(weighted_score),0) as weighted_score"))->where('appraisal_identity_id', $identities)->where('employee_id', $userEmployee)->where('parent_id', $parentid)->first();
    $maxscore = DB::table('appraisal_goal_types')->select('max_score')->find($child->parent_id);
return response()->json([
      'maxscore' => $maxscore->max_score,
      'weightedscore' => $weightedscore->weighted_score
   ]);        
  }

Также у меня есть маршруты / Интернет. php

   Route::get('get/findScore','Appraisal\AppraisalGoalsController@findScore')->name('get.scores.all');

view: create.blade

      <div class="col-12 col-sm-6">
        <div class="form-group">
          <label class="control-label"> Goal Type:<span style="color:red;">*</span></label>
          <select id="goal_type" class="form-control" name="goal_type_id">
          <option value="">Select Goal Type</option>

            @foreach ($categories as $category)
              <option hidden value="{{ $category->id }}" {{ $category->id == old('category_id') ? 'selected' : '' }}>{{ $category->name }}</option>

              @if ($category->children)
                @foreach ($category->children as $child)
                  <option value="{{ $child->id }}" {{ $child->id == old('category_id') ? 'selected' : '' }}>&nbsp;&nbsp;{{ $child->name }}</option>
                @endforeach
              @endif
            @endforeach
          </select>
        </div>
      </div> 

<input type="hidden" id="max_score" class="form-control" >
<input type="hidden" id="weighted_score" class="form-control" value="0" >


<div class="col-12 col-sm-6">
 <div class="form-group">
    <label class="control-label"> Weight(%):<span style="color:red;">*</span></label>
    <input  type="number" name="weighted_score" id="total_weighted_score" placeholder="Enter weighted score here" class="form-control" max="120" onkeyup="checkScore(this.value)">
 </div>
</div>  

<script type="text/javascript">
$(document).ready(function() {
    $(document).on('change', '#goal_type', function() {
        var air_id =  $(this).val();

        var a = $(this).parent();

        var op = "";

        $.ajax({
            type: 'get',
            url: '{{ route('get.scores.all') }}',
            data: { 'id': air_id },
            dataType: 'json',      //return data will be json
            success: function(data) {
                console.log(data.maxscore);
                console.log(data.weightedscore);
                 $('#max_score').val(data.maxscore);
                 $('#weighted_score').val(data.weightedscore);
            },
            error:function(){

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

<script type="text/javascript">
 function checkScore(value){
  let max_score = $("#max_score").val();
  let weighted_score = $("#weighted_score").val();
  let sumValue = parseInt(weighted_score) + parseInt(value);

 if (sumValue > max_score) {
 alert("sum value is greater than max score");
 $("#total_weighted_score").val('');
  return false;
    }
  }
</script>

Приведенный выше код прекрасно работает для create.blade.

Чего я хочу добиться, так это при keyup для конкретного сотрудника я хочу приложение #weighted_score с текущим значением в total_weighted_score. Затем, если общая сумма больше, чем #max_score, должно появиться следующее сообщение:

alert («значение суммы больше, чем max Score»);

Однако, когда я хотел использовать тот же код для edit.blade, он не работает. Ничего не произошло. Поскольку при редактировании:

<div class="col-12 col-sm-6">
 <div class="form-group">
    <label class="control-label"> Weight(%):<span style="color:red;">*</span></label>
    <input  type="number" name="weighted_score" id="total_weighted_score" placeholder="Enter weighted score here" class="form-control" max="120" onkeyup="checkScore(this.value)">
 </div>
</div>

уже переносит данные из таблицы.

Как заставить этот же код (jQuery) работать для edit.blade?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...