javascript - 为什么我无法获得选择选项 html 的值?
问题描述
所以我列出了一些类别,每个类别都有一个适当的id值,想法是在更改类别之后向服务器发送ajax请求,但在此之前我必须获取类别的id选中后,问题是每次我尝试获取值后都会收到此错误消息
app.js:1 Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
at C.fn.init.val (app.js:1)
at sortByCategory (news:174)
at HTMLSelectElement.onchange (news:215)
问题是它返回了整个窗口对象,我不知道如何只获取所选选项的值。
html -
<select onchange="sortByCategory()" name="category">
@foreach($categories as $category)
<option value="{!! $category->id !!}">
{{ $category->title }}
</option>
@endforeach
</select>
javascript -
function sortByCategory(){
var value = $(this).val();
console.log(value);
$.ajax({
type:'POST',
url:'/home/sortByCategory',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data : {
category : 'bar'
},
success:function(data){
}
});
}
解决方案
如果您使用事件处理程序(如“onchange”)将其作为参数发送,如下所示:
function sortByCategory(el){
alert($(el).val());
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select onchange="sortByCategory(this)" name="category">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
更好的解决方案是将 JavaScript 代码与 HTML 代码分开,如下所示:
$("#category").on("change", function() {
alert($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="category" id="category">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
推荐阅读
- c# - 在 GET 上获取数据并将序列化的 JSON 发送到模型与 API 调用
- python - 使用python和OpenCV从图像中提取数字
- javascript - 如何为以下角度方法编写测试用例
- javascript - 正则表达式匹配字符串中的多个数字
- reactjs - 如何在使用 mapStateToProps 设置道具时更新状态?
- angular - 如何使 Angular Async Await 工作或等到 http 调用完成?
- javascript - 带有选择输入的 QueryBuilder 没有过滤器操作符
- python - 如何以 plist 或 zip 格式读写二进制数据?
- python - 用 Python 显示温度(WMI 问题)
- javascript - 将 keyof 与通用函数和 newable 一起使用