6

同じ名前で値が異なるラジオボタンのグループがあります。私は次のようなことをしたいと思います:

$("#langs").on("change", "[name=locale]", myfunction);

これは機能しますが、新しいラジオボタンをクリックすると、myfunctionが2回呼び出されます。1回は自動的にチェックが外される「古い」ラジオボタンで、もう1回はクリックしている新しいラジオボタンです。

onchangeをonclickに変更することは解決策ではありません。これは、jquery-mobileで使用し、入力をラベルでラップするため、入力ではなくラベルがクリックされるためです。

4

4 に答える 4

6

$(this)ラジオボタンがチェックされているかどうかを引数として渡してmyfunctionから内部myfunctionチェックを行うことができます

$("#langs").on("change", "[name=locale]", function() { myfunction($(this)); } );

function myfunction(elem) {
    if(elem.is(':checked')) {
        // code here
    }
}
于 2012-06-08T17:07:00.110 に答える
6

これはあなたのために働きますか?jQMドキュメントに続く

HTML:

<div data-role="page"> 
    <fieldset data-role="controlgroup">
        <legend>Choose a language:</legend>
        <input type="radio" name="langs" id="english-lang" value="en" />
        <label for="english-lang">English</label>
        <input type="radio" name="langs" id="korean-lang" value="ko" />
        <label for="korean-lang">Korean</label>
    </fieldset>
</div>​

JS:

$("input[name=langs]:radio").bind( "change", function(event, ui) {
    console.log('Lang: '+$(this).val());

    // Call function here
});
于 2012-06-08T17:23:04.457 に答える
0

次のようなことを試してみてはどうでしょうか。

<div data-role="fieldcontain">
     <fieldset data-role="controlgroup" data-type="horizontal">
     <input type="radio" name="langs" id="first" value="1" onchange="myfunction();"/>
     <label for="first">First</label>
     <input type="radio" name="langs" id="second" value="2" onchange="myfunction();"/>
     <label for="second">Second</label>
     </fieldset>
</div>

その後:

function myfunction(){
    if($("#langs option:selected")){
    //do something, for example
        alert($("#langs option:selected").text());
    }
}

これは、関数を使用する必要のある要素内に含まれているため、関数を1回だけ呼び出す必要があります。

于 2012-06-08T16:57:45.080 に答える
0

私の知る限り、ラベルでjqueryを使用してonclickeventeを使用するための制限はありません。IDをお持ちの場合は、それを使用できます。次のHTMLがあるとします。

<label for="foo" id="whatever1">foo</label><input type="radio" name="radiogroup_0" value="foo" >
<label for="bar" id="whatever2">bar</label><input type="radio" name="radiogroup_1" value="bar" >

あなたのjqueryにあなたは追加するかもしれません:

$('#whatever1').click(
  function(){
    //paste your code inside
  }
);

他のラジオボタンのラベルについても同じです

$('#whatever1').click(
  function(){
    //paste your code inside
  }
);

お役に立てれば。ルイスM。

于 2012-06-08T16:51:37.790 に答える