如何在html选择的onChange上传递参数

IT技术 javascript jquery html combobox onchange
2021-02-06 01:52:33

我是 JavaScript 和 jQuery 的新手。我想显示一个组合框-A,它是一个 HTML <select>id在 onChange() 上的另一个位置具有其选定内容和内容。

如何通过 select 传递完整的组合框id,以及如何在 onChange 事件触发时传递其他参数?

6个回答

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事件上选择组合框的值

改用 this.value 它将起作用 =) 发送 this 是发送整个 select 元素
2021-04-03 01:52:33
The change event fires only if the select box loses focus. 有没有办法在值更改后立即触发事件?
2021-04-05 01:52:33
就我而言,代码在 Firefox 上有效,但在 Chrome 上无效。
2021-04-09 01:52:33
谢谢,这对我有用。基本上我想在不同的地方显示相同的组合框,所以我给了 2 个组合框的 2 个不同的 id。无论如何,我可以在不同的地方显示相同的组合框。任何帮助将不胜感激。
2021-04-10 01:52:33
检索内部值的更简洁的方法getComboA()var value = sel.value;
2021-04-12 01:52:33

在某些情况下可能很方便的另一种方法是将 selected 的值<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>

这正是我所需要的。已经有一个 javascript 函数,可以在单击颜色样本时更改颜色图片。但是有一个要求它也适用于 PayPal 下拉选择选项。使用了这个,但没有使用“值”(因为我需要它用于 Paypal),我为每个选项添加了一个“标签”,其中包含我用来更改图片的变量名称。完美地工作!谢谢!!
2021-03-17 01:52:33
这很好。另一个更简单的有效选项是: <select onChange="myFunction(this.value)">
2021-03-18 01:52:33
用于访问所选选项的其他属性。
2021-03-20 01:52:33

关于如何在 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。您应该查找差异并确保使用适当的差异。

@Gendaful:htmlData.push($('<select id="choose" name="choose">'));应该可以解决问题(您之前推送了一个字符串而不是一个完整的节点)。> 6 年过去了...
2021-03-26 01:52:33
我试过了,但即使我放入了 document.ready 方法,也不会调用更改函数。我的代码是 htmlData.push('<select id="choose" name="choose">'); $('#choose').change(function() { alert('change called'); alert('The option with value '+$(this).value()+' and text '+$(this). text()+' 被选中。'); 请帮我解决这个问题。
2021-04-02 01:52:33

JavaScript 解决方案

<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>
这是这里最通用和最全面的解决方案。谢谢!
2021-04-02 01:52:33
这个解决方案对我有用。我能够在没有库的情况下轻松实现。纯香草。非常好!
2021-04-05 01:52:33

我发现@Piyush 的回答很有帮助,只是补充一下,如果您以编程方式创建一个选择,那么有一种重要的方法可以获得这种可能并不明显的行为。假设您有一个函数并创建了一个新的选择:

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不需要像字符串到代码那样的邪恶转换。newSelect.onchange = changeitem;如果您将 changeitem 重写为var changeitem = function () {console.log(this.selectedIndex); };(即使用this而不是函数参数),实际上工作正常或者,changeitem按原样写newSelect.onchange = function () {changeitem(this); };
2021-03-13 01:52:33
newSelect.setAttribute('onchange', 'changeitem(this)'); - 为之欢呼
2021-04-12 01:52:33