8

JQuery または JavaScript を使用して、既に選択されている値を変更していなくても、ユーザーが値を選択したことを検出したいと考えています。

これはどのように達成できますか?

私は試した -

$('#MyID').select(function(){ /*my function*/ });

$('#MyID').change(function(){ /*my function*/ }); //nothing changing, so this fails

しかし、それらは機能しません。

例 - 何も選択されていない年のリストを含むドロップダウンがあり、ユーザーが「1976」を選択し、関数を実行します。「1976」を選択した状態で、ユーザーがドロップダウンをクリックしてもう一度「1976」を選択した場合、機能を再度実行したいと思います。

4

7 に答える 7

6

すべてのシステムが動作します (少なくとも 2 回目のクリックで...)

選択時に実行するようにスイッチを設定し、キャプチャおよび/または on 後にスイッチをリセットしblurます。

var go = false;//switch off
$('#MyID').on('click',function() {//on click
    if (go) {//if go
        //do stuff here with $(this).val()
        go = false;//switch off
    } else { go = true; }//if !go, switch on
}).on('blur', function() { go = false; });//switch off on blur

フィドルを作った:http://jsfiddle.net/filever10/2XBVf/

編集:キーボードのサポートについても、このようなものが機能するはずです。

var go = false;//switch off
$('#MyID').on('focus active click',function() {//on focus/active
    doit($(this));//do it
}).on('change', function() {
    go=true;//go
    doit($(this));//and doit
}).on('blur', function() { go = false; });//switch off on blur

function doit(el) {
    if (go) {//if go
        //do stuff here with el.val()
        go = false;//switch off
    } else {go=true}//else go
}

フィドルを作りました:http://jsfiddle.net/filever10/TyGPU/

于 2014-01-20T19:50:48.163 に答える
0

私はFirefoxでのみテストされた動作するjsfiddleを作成しました。選択ボックスにダミーのオプションを追加することで、あなたが望むことを何とかすることができました。このダミー オプションにはdisplay:noneスタイルがあり、オプション リストには表示されません。

デモ

<select id="myselect">
    <option value="1">one</option>
    <option value="2">two</option>
    <option value="3" selected="selected">three</option>
    <option value="4">four</option>
    <option class="dummy" style="display:none">dummy</option>
</select>



$('#myselect').on('focus',function(){    
    $(this).find("option.dummy").prop("selected", true);
});

$('#myselect').on('change',function(){
    var select=$(this);
    var text=select.find("option:selected").text();

    $('.dummy').attr('value',select.val()).text(text);
    alert(select.val());


});
于 2014-01-21T21:26:50.497 に答える
0

これを試して...

選択したオプションの値を取得するには...

$("body").click(function(event) {
    if(event.target.nodeName== "SELECT"){
                 selectedValue = event.target.value;
            }   
});

次に、値からテキストを取得します

var text = $("option").filter(function() {
      return $(this).attr("value") === selectedValue;
    }).first().text();
于 2013-06-28T08:28:19.917 に答える
0

このコードを試してください。

$("#MyID").click(function (){
    alert($("#MyID").val());
});

ここで試してみてください!

于 2014-01-21T07:38:05.230 に答える