2016-04-18 22 views
1

編集:申し訳ありません、私は非常に疲れていました。 WTF:D特定のIDにjquery .on(変更)

私は同じページに多くの異なるドロップダウンを持っていて、それらが変化したときにAJAXリクエストをすることはできません。

私はこのようにそれを行う場合は、それが動作:

$(document).on('change', '#changeresponsibleuser', function(){ 
    var user = $(this).val(); 
    var partnerid = $(this).attr('name'); 
      $.ajax({ 
       type: "POST", 
       url: "resources/dialogs/editResponsibleUser.php", 
       data: {user: user, 
        partnerid: partnerid}, 
       success: function(msg){ 
        $('.productmessage').html(msg).hide().fadeIn(500).fadeOut(4000); 

        }, 
       }); 
    }); 

しかし、私はページ上の持っているすべてのドロップダウンボックスでこのトリッカーズ。

$(document).ready(function(){ 
    $("#changeresponsibleuser").on('change',function(){ 
    var user = $(this).val(); 
    var partnerid = $(this).attr('name'); 
      $.ajax({ 
       type: "POST", 
       url: "resources/dialogs/editResponsibleUser.php", 
       data: {user: user, 
        partnerid: partnerid}, 
       success: function(msg){ 
        $('.productmessage').html(msg).hide().fadeIn(500).fadeOut(4000); 

        }, 
       }); 

     }); 
    }); 

それで、その正確なIDでドロップダウンリストを聴くだけです。しかし、それはうまくいきません。変更イベントは発生しません。

#changeresponsibleuserが変更された場合にのみ、どのようにイベントをトリガーできますか?

マークアップは次のようになります。

<select id="changeresponsibleuser" name="2" class="responsible2 form-control form-group"> 

<option name="user" value="36" selected="selected">One user</option> 
<option name="user" value="41">Another user</option> 
<option name="user" value="40">yet another user</option> 
</select> 

感謝を事前に!

+0

は一意でなければなりません!__ – Rayon

+0

ページのロード後に '$(「#のchangeresponsibleuser」)' DOM –

答えて

1

$(function(){ 
 
$("#changeresponsibleuser").on('change', function(){ 
 
    alert("Works"); 
 
}) 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="changeresponsibleuser" name="2" class="responsible2 form-control form-group"> 
 

 
<option name="user" value="36" selected="selected">One user</option> 
 
<option name="user" value="41">Another user</option> 
 
<option name="user" value="40">yet another user</option> 
 
</select>

それは動作します。どのように動作していないと言うのですか?

しかし、私はあなたの代わりにIDをクラス名を使用する必要がありますページ

号に持っているすべてのドロップダウンボックスでこのトリッカーズ。重複IDを使用しているようです。したがって、重複するIDを持つすべての選択ドロップダウンでトリガーされます。

$(document).on('change', '.changeresponsibleuser',function(){ 
    alert("Works"); 
}); 

これは、すべてのクラスがchangeresponsibleuser

+2

内の要素の数を確認するために、コンソールで次のコマンドをチェックし、それが答えである資格がありません?あなたは答えを投稿する必要はありません_IT IS WORKING!_ – Rayon

+0

コードが正常に動作する場合は、「再現不可能」として閉じなければなりません。 – Tushar

+0

イベントデリゲーションは重複したIDだけでなく、セレクタに一致するすべての子孫に届きます。好ましい方法ではありませんが! – Rayon

1

あなたはAJAXとID changeresponsibleuserでドロップダウンロードしているた変更をドロップダウン?にトリガされますかあなたがそれをしている場合は、ドキュメント上の変更イベントをバインドするためのドロップダウンが利用できないことを意味します。これを使用する代わりに、 - select onchange="function_name()"

を使用して、この関数でajaxリクエストを書くことができます。

0

あなたのマークアップ:

<select id="changeresponsibleuser" name="2" class="responsible2 form-control form-group"> 
    <option name="user" value="36" selected="selected">One user</option> 
    <option name="user" value="41">Another user</option> 
    <option name="user" value="40">yet another user</option> 
</select> 

など、あなたのjs:

$(function() { 
    $("#changeresponsibleuser").change(function() { 
     // do your stuff 
    }); 
}); 

は、あなたのマークアップにjQueryのlibが含まことを忘れないでください。 __IDは、文書の属性

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>