我是JavaScript和jQuery的初学者。我想在onChange()事件中展示一个下拉框A,这个下拉框是一个HTML <select>
元素,需要同时传递它的选中id
和内容到另一个地方。
我该如何传递整个下拉框及其选择的id
,以及如何在触发onChange事件时传递其他参数?
我是JavaScript和jQuery的初学者。我想在onChange()事件中展示一个下拉框A,这个下拉框是一个HTML <select>
元素,需要同时传递它的选中id
和内容到另一个地方。
我该如何传递整个下拉框及其选择的id
,以及如何在触发onChange事件时传递其他参数?
function getComboA(selectObject) {
var value = selectObject.value;
console.log(value);
}
<select id="comboA" onchange="getComboA(this)">
<option value="">Select combo</option>
<option value="Value1">Text1</option>
<option value="Value2">Text2</option>
<option value="Value3">Text3</option>
</select>
以上示例演示了如何在 OnChange 事件中获取下拉框的选定值。
getComboA()
中的值更加简洁的方法是 var value = sel.value;
。 - Yony另一种在某些情况下非常方便的方法是直接将所选<option />
的值传递到函数中,像这样:
function myFunction(chosen) {
console.log(chosen);
}
<select onChange="myFunction(this.options[this.selectedIndex].value)">
<option value="1">Text 1</option>
<option value="2">Text 2</option>
</select>
使用jQuery如何实现:
<select id="yourid">
<option value="Value 1">Text 1</option>
<option value="Value 2">Text 2</option>
</select>
<script src="jquery.js"></script>
<script>
$('#yourid').change(function() {
alert('The option with value ' + $(this).val() + ' and text ' + $(this).text() + ' was selected.');
});
</script>
你还应该知道JavaScript和jQuery并不相同。jQuery是有效的JavaScript代码,但并非所有JavaScript都是jQuery。你应该查阅它们之间的区别,并确保你正在使用合适的那一个。
htmlData.push($('<select id="choose" name="choose">'));
这样就可以了(之前你推送的是字符串而不是完整的节点)。>已经过去6年了... - Johannes<select id="comboA">
<option value="">Select combo</option>
<option value="Value1">Text1</option>
<option value="Value2">Text2</option>
<option value="Value3">Text3</option>
</select>
<script>
document.getElementById("comboA").onchange = function(){
var value = document.getElementById("comboA").value;
};
</script>
或者<script>
document.getElementById("comboA").onchange = function(evt){
var value = evt.target.value;
};
</script>
或者<script>
document.getElementById("comboA").onchange = handleChange;
function handleChange(evt){
var value = evt.target.value;
};
</script>
我发现@Piyush的回答很有帮助,补充一下,如果你以编程方式创建了一个select,那么获取此行为的重要方法可能不是很明显。假设您有一个函数并创建了一个新的select:
var changeitem = function (sel) {
console.log(sel.selectedIndex);
}
var newSelect = document.createElement('select');
newSelect.id = 'newselect';
newSelect.onchange = changeitem;
newSelect.setAttribute('onchange', 'changeitem(this)');
您可以设置参数。如果您使用第一种方法,则传递给您的 onchange
函数的参数将取决于浏览器。第二种方法似乎在各种浏览器中都能正常工作。
eval
一样将字符串转换为代码。实际上,如果你将 changeitem
重写为 var changeitem = function () {console.log(this.selectedIndex); };
(即使用 this
而不是函数参数),那么 newSelect.onchange = changeitem;
就可以正常工作了。或者,保留 changeitem
不变,并编写 newSelect.onchange = function () {changeitem(this); };
。 - Steve ByrnesThis is helped for me.
For select:
$('select_tags').on('change', function() {
alert( $(this).find(":selected").val() );
});
对于单选框/复选框:
$('radio_tags').on('change', function() {
alert( $(this).find(":checked").val() );
});
选择元素通常有两个值需要访问。
首先是要发送到服务器的值,这很容易:
$( "#myselect" ).val();
// => 1
<select id="myselect">
<option value="1">Mr</option>
<option value="2">Mrs</option>
<option value="3">Ms</option>
<option value="4">Dr</option>
<option value="5">Prof</option>
</select>
$( "#myselect option:selected" ).text();
// => "Mr"
<select onchange="myfunction($(this).val())" id="myId">
</select>
HTML 模板:
<select class="staff-select">
<option value="">All</option>
<option value="196">Ivan</option>
<option value="195">Jon</option>
</select>
Js代码:
const $staffSelect = document.querySelector('.staff-select')
$staffSelect.onchange = function () {
console.log(this.value)
}
function getComboA(selectObjectValue) {
console.log(selectObjectValue);
}
<select id="comboA" onchange="getComboA(this.value)">
<option value="">Select combo</option>
<option value="Value1">Text1</option>
<option value="Value2">Text2</option>
<option value="Value3">Text3</option>
</select>