17

select 要素を名前で見つけることはできますが、それに関連付けられている選択された値を見つけるのに苦労しています。

以下は私のコードです:

<select  name="a[b]" onchange='mySelectHandler("a[b]")'>
     <option value='Choice 1'>Choice 1</option>
     <option value='Choice 2'>Choice 2</option>

</select>

次に、ハンドラーで使用しています:

function mySelectHandler(name){
     var mySelect = $('select[name=' + name)
     // try to get selected value
     // alert ("selected " + mySelect.val())
     console.log("object "+ mySelect.toSource());
  }

ログへの印刷の結果は次のとおりです。

オブジェクト ({length:0, prevObject:{0:({}), context:({}), length:1}, context:({}), selector:"select[name=a[b]"}))

これを行う方法についてのアイデアはありますか?

4

8 に答える 8

33

セレクターが少しずれています。末尾がありません]

var mySelect = $('select[name=' + name + ']')

次のように、名前を引用符で囲む必要がある場合もあります。

var mySelect = $('select[name="' + name + '"]')
于 2012-08-10T20:58:43.013 に答える
14

これを試して:

$('select[name="' + name + '"] option:selected').val();

これにより、メニューの選択された値が取得されます。

于 2012-08-10T21:00:04.720 に答える
1

onchangeHTML マークアップからイベントを削除し、ドキュメント準備完了イベントにバインドします

<select  name="a[b]" >
     <option value='Choice 1'>Choice 1</option>
     <option value='Choice 2'>Choice 2</option>
</select>​

とスクリプト

$(function(){    
    $("select[name='a[b]']").change(function(){
       alert($(this).val());        
    }); 
});

作業サンプル: http://jsfiddle.net/gLaR8/3/

于 2012-08-10T21:02:41.833 に答える
0

要素名で選択要素から値を取得するには、これを試してください

$("select[name=elementnamehere]").val();
于 2014-01-09T11:47:19.517 に答える
0

または、単に行うことができます

$('select[name=a[b]] option:selected').val()
于 2016-08-11T18:52:46.260 に答える
0

それ以外の

mySelect.toSource()

使用する

mySelect.val()
于 2012-08-10T20:59:53.613 に答える
0

MrOBrian の回答は、末尾と引用符が欠落しているために現在のコードが機能しない理由を示していますが]、これを機能させる簡単な方法を次に示します。

onchange='mySelectHandler(this)'

その後:

function mySelectHandler(el){
     var mySelect = $(el)
     // get selected value
     alert ("selected " + mySelect.val())
  }

または、インライン イベント ハンドラーを完全に削除し、イベント ハンドラーを jQuery にバインドします。

$('select[name="a[b]"]').change(function() {
    var mySelect = $(this);
    alert("selected " mySelect.val());
});

最後は、document.ready ハンドラーまたは select 要素の後に表示されるスクリプト ブロックにある必要があります。他の選択に対して同じ関数を実行したい場合は、セレクターをすべてに適用されるものに変更するだけです。たとえば、すべての選択が になる$('select')か、特定のクラスのすべてが になります$('select.someClass')

于 2012-08-10T21:03:19.430 に答える
0

ここで回答に追加するには、selectとの間にスペースがないことを確認してください[name...

違う:

'select [name=' + name + ']'
       ^

右:

'select[name=' + name + ']'
于 2016-11-22T13:31:42.943 に答える