jquery - Laravel - 如果更改下拉列表中的语句失败
问题描述
在我的 Laravel-5.8 项目中,我试图根据更改值的下拉列表加载到文本框中:
看法
<form action="{{route('sports.store')}}" method="post" class="form-horizontal" enctype="multipart/form-data">
{{csrf_field()}}
<div class="card-body">
<div class="form-body">
<div class="row">
<div class="col-12 col-sm-6">
<div class="form-group">
<label class="control-label"> Sport Type:<span style="color:red;">*</span></label>
<select id="sport_type" class="form-control @error('sport_type_id') is-invalid @enderror" name="sport_type_id">
<option value="">Select Sport Type</option>
@foreach ($categories as $category)
@unless($category->name === 'Joggings')
<option hidden value="{{ $category->id }}" {{ $category->id == old('sport_type_id') ? 'selected' : '' }}>{{ $category->name }}</option>
@if ($category->children)
@foreach ($category->children as $child)
@unless($child->name === 'Joggings')
<option value="{{ $child->id }}" {{ $child->id == old('sport_type_id') ? 'selected' : '' }}> {{ $child->name }}</option>
@endunless
@endforeach
@endif
@endunless
@endforeach
</select>
</div>
</div>
<input type="hidden" id="max_score" class="form-control">
<div class="col-12 col-sm-6">
<div class="form-group">
<label class="control-label"> Score:<span style="color:red;">*</span></label>
<input type="number" name="score" id="total_score" value="{{ old('score', $sport->score) }}" placeholder="Enter score here" class="form-control @error('score') is-invalid @enderror">
</div>
</div>
</div>
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-primary">{{ trans('global.save') }}</button>
</div>
</form>
<script type="text/javascript">
$(document).ready(function() {
$(document).on('change', '#sport_type', function() {
var air_id = $(this).val();
var a = $(this).parent();
var op = "";
var inputweight = $('input[name="score"]');
$.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);
$('#max_score').val(data.maxscore);
if ($.trim($('option:selected', this).text()) == 'wrestling') {
inputweight.prop('readonly', true);
$('#total_score').val(data.maxscore);
} else {
inputweight.prop('readonly', false);
}
},
error: function() { }
});
});
});
</script>
在上面的jQuery中,我想加载
val(data.maxscore)
进入
#total_score
那是,
$('#total_score').val(data.maxscore);
但我发现它不起作用。什么都没有显示。
最初我虽然条件不正确,但当我确认时我看到它是正确的。另外,当我删除 if 语句时,它会加载
$('#total_score').val(data.maxscore);
我该如何解决这个问题?
谢谢
解决方案
似乎由于回调this
内部变量的上下文不正确而发生错误。success
尽量避免使用它,例如,像这样:
if ($.trim($('#sport_type option:selected').text()) == 'wrestling') {
...
} else {
...
}
推荐阅读
- javascript - 如何动态获取标签值并将来自不同输入的数字与reactjs相加
- ansible - 如何根据环境制作Job属性值
- rxjs - 回复主题变成整个组合最新热门
- javascript - 如何删除 plotly.js 中的轴悬停信息?
- c# - 我们如何在 Xamarin Forms 中实现骨架关节映射功能
- c# - ListView 增加行数的总和
- php - CodeIgniter3:$_SERVER['CI_ENV'] 无法设置配置
- bash - 删除一个文件夹中另一个文件夹中的图像
- tensorflow - Keras Tensorflow 中的切片张量
- ckeditor - 在 CKEditor 中更改插件标题的语言