2012-09-10 57 views
0

我有一個表格,有8個下拉框填充數據庫條目(或空白,如果沒有)。jQuery>針對動態創建的選擇

例如:

<select name='admin_id[]' id='admin_select1st' class='listbox medium'> 
<select name='admin_id[]' id='admin_select2nd' class='listbox medium'> 

等通過8個條目。

我試圖做的(最終)是當這些選擇框中的一個被更改時,它將使用jQuery post和更新文本輸入字段。

什麼現在發生的事是,當我使用下面的jQuery我得到的選擇框每一個(而不是隻是我換了一個)警告:

<script type='text/javascript'> 
$("[id^=admin_select]").change(function() { 
alert('Handler for .change() called.'); 
}); 
</script> 

現在這一預期因爲我告訴它匹配任何以admin_select開頭的ID。我需要知道的是,是否有一種方法可以使用此代碼一次,而不必爲每個admin_select1st,admin_select2nd,admin_select3rd等寫出8次重複我的代碼?

+7

你的代碼似乎工作得很好:HTTP://的jsfiddle .net/2bLBX/ –

+2

它應該只被調用一次。處理程序綁定到每個下拉菜單,'.change'只會在下拉菜單中觸發,該值會更改。 –

+0

可能每個都使用jQuery:http://api.jquery.com/jQuery.each/ –

回答

0

正如在下面的評論中提到你的問題你現在有什麼應該工作。

或者你可以嘗試這樣的事情

$("[id^=admin_select]").each(

function(intIndex){ 


    $(this).change(function(){ 
    alert(intIndex); 
    }); 
} 
); 

我沒有測試它雖然,但它應該做你想要什麼。

0

重複提醒中的問題是,它位於產生8個選擇框的while循環中,因此代碼重複了8次,因此提醒了8次。

將它移到while循環之外,現在它按預期工作。

0

假設輸入文本字段的ID 結果

如果你不想通過匹配任何標識保留的元素,你可以通過類選擇讓他們;如果你需要一些時間綁定代碼的一部分,你可以使用取消綁定

$(document).ready(function(){ 
    $(".listbox.medium").each(function() { 
     $(this).unbind("change").bind("change", function() { 
     $("#result").val(sel.val()); 
     }); 
    }); 
}); 

這裏充分代碼

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $(".listbox.medium").each(function() { 
       $(this).change(function() { 
        $("#result").val($(this).val()); 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body style="background-color: rgb(78, 120, 178);"><br /> 
    <input type="text" id="result" value="" /> 
    <select name='admin_id[]' id='admin_select1st' class='listbox medium'> 
     <option></option> 
     <option>1</option> 
    </select> 
    <select name='admin_id[]' id='admin_select2nd' class='listbox medium'> 
     <option></option> 
     <option>2</option> 
    </select> 
    <select name='admin_id[]' id='admin_select3st' class='listbox medium'> 
     <option></option> 
     <option>3</option> 
    </select> 
    <select name='admin_id[]' id='admin_select4nd' class='listbox medium'> 
     <option></option> 
     <option>4</option> 
    </select> 
    <select name='admin_id[]' id='admin_select5st' class='listbox medium'> 
     <option></option> 
     <option>5</option> 
    </select> 
    <select name='admin_id[]' id='admin_select6nd' class='listbox medium'> 
     <option></option> 
     <option>6</option> 
    </select> 
    <select name='admin_id[]' id='admin_select7st' class='listbox medium'> 
     <option></option> 
     <option>7</option> 
    </select> 
    <select name='admin_id[]' id='admin_select8nd' class='listbox medium'> 
     <option></option> 
     <option>8</option> 
    </select> 
</body>