如何在html select的onChange上传递参数

Gen*_*ful 177 html javascript jquery combobox onchange

我是JavaScript和jQuery的新手.我想展示一个组合框-A,它是一个<select>带有选定id内容的HTML ,另一个位于onChange()上.

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

Piy*_*too 337

function getComboA(selectObject) {
    var value = selectObject.value;  
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

上面的示例为您提供OnChange事件上组合框的选定值.

  • 检索`getComboA()`中的值的一种更简洁的方法是`var value = sel.value;` (13认同)
  • 仅当选择框失去焦点时才会触发更改事件.有没有办法在值更改后立即触发事件? (3认同)
  • 使用this.value代替,它将起作用=)发送此消息将发送整个select元素 (2认同)

Caz*_*nti 46

在某些情况下可以使用的另一种方法是将所选的值<option />直接传递给函数,如下所示:

<select onChange="myFunction(this.options[this.selectedIndex].value)">
  <option value="1">Text 1</option>
  <option value="2">Text 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

  • 很好 另一个更简单的有效选项是:&lt;select onChange =“ myFunction(this.value)”&gt; (2认同)

aih*_*ham 32

有关如何在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>
Run Code Online (Sandbox Code Playgroud)

您还应该知道Javascript和jQuery不完全相同.jQuery是有效的JavaScript代码,但并非所有JavaScript都是jQuery.您应该查看差异并确保使用适当的差异.

  • 我尝试了这个,但是即使我放入document.ready方法也没有调用更改函数.我的代码是htmlData.push('<select id ="select"name ="choose">'); $('#choose').change(function(){alert('change called'); alert('带有值的选项'+ $(this).value()+'和text'+ $(this). text()+'被选中.');请帮帮我. (2认同)

小智 13

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>
Run Code Online (Sandbox Code Playgroud)
<script>
 document.getElementById("comboA").onchange = function(){
    var value = document.getElementById("comboA").value;
 };
</script>
Run Code Online (Sandbox Code Playgroud)

或者

<script>
 document.getElementById("comboA").onchange = function(evt){
    var value = evt.target.value;
 };
</script>
Run Code Online (Sandbox Code Playgroud)

或者

<script>
 document.getElementById("comboA").onchange = handleChange;

 function handleChange(evt){
    var value = evt.target.value;
 };
</script>
Run Code Online (Sandbox Code Playgroud)


Mic*_*utz 5

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

var changeitem = function (sel) {
  console.log(sel.selectedIndex);
}
var newSelect = document.createElement('select');
newSelect.id = 'newselect';
Run Code Online (Sandbox Code Playgroud)

正常的行为可能就是说

newSelect.onchange = changeitem;
Run Code Online (Sandbox Code Playgroud)

但这并不能真正指定传入的参数,所以你可以这样做:

newSelect.setAttribute('onchange', 'changeitem(this)');
Run Code Online (Sandbox Code Playgroud)

并且您可以设置参数.如果你是第一种方式,那么你将获得的onchange函数将取决于浏览器.第二种方式似乎跨浏览器工作就好了.


Ani*_*rni 5

jQuery解决方案

如何获取所选选项的文本值

选择元素通常具有两个您要访问的.
首先是要发送到服务器的,这很容易:

$( "#myselect" ).val();
// => 1
Run Code Online (Sandbox Code Playgroud)

第二个是select 的文本值.
例如,使用以下选择框:

<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>
Run Code Online (Sandbox Code Playgroud)

如果你想获得字符串"Mr",如果选择了第一个选项(而不仅仅是"1"),你可以通过以下方式实现:

$( "#myselect option:selected" ).text();
// => "Mr"  
Run Code Online (Sandbox Code Playgroud)

也可以看看


ilg*_*gam 5

这对我有帮助。

对于选择:

$('select_tags').on('change', function() {
    alert( $(this).find(":selected").val() );
});
Run Code Online (Sandbox Code Playgroud)

对于收音机/复选框:

$('radio_tags').on('change', function() {
    alert( $(this).find(":checked").val() );
});
Run Code Online (Sandbox Code Playgroud)