2014-01-21 63 views
1

1(的index.php)傳球達陣數據

<?php for($i=0;$i<2;$i++) { ?> 
<select id="name[<?php echo $i;?>]"> 
<option value="John">John</option> 
<option value="Alice">Alice</option> 
</select> 

<input type="text" id="name-id"> 

<input type="text" id="location"> 

<?php } ?> 
</table> 
<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script> 
<script src="js/function.js"></script> 

第2頁(function.js)

for (i=0;i<2;i++){ 
$('select#name['+i+']').on('change',function() 
{ alert(1); }); } 

代碼不工作後,我在數組中添加..有人請幫助我..

+2

您正在生成無效的標記,標識都應該是_unique_。 – undefined

+0

如何在同一頁面添加另外5個相同的下拉菜單?如果沒有數組 – Billy

+1

這個名字就是你添加括號來構建數組的地方''input name =「some_name []」>' –

回答

1

你必須逃離ID中[],而做到這一點,你最好不要在ID介紹[],該[]應在普遍使用name屬性一起使用。

HTML:

<select id="name_<?php echo $i;?>" name="name[]"> 

JS:

$('select#name_'+i).on('change',function() { //... 

或者你可以代替添加ID選擇的一類和使用類選擇。

0

你需要躲避[]在ID

for (var i = 0; i < 2; i++) { 
    $('#name\\[' + i + '\\]').on('change', function() { 
     alert(1); 
    }); 
} 

也因爲ID應該是在一個頁面獨特的,沒有必要的元素選擇select


但我會建議增加一個類來選擇,而不是使用ID

<select id="name[<?php echo $i;?>]" class="name"> 
    <option value="John">John</option> 
    <option value="Alice">Alice</option> 
</select> 
相似的選擇元素

然後

$('select.name').on('change', function() { 
    alert(1); 
}); 

+0

正在工作中......謝謝.. var name = new Array(); \t name [i] = $('select#name \\ ['+ i +'\\''')。val(); 這是正確的嗎? – Billy

+0

@ user2892997'name [i] = $('select#name \\ ['+ i +'\\]')。val();' - 你需要使用'\\'而不是'\' –

0

你需要逃避[ AND ]\\在前面。

$('#name\\[' + i + '\\]').on('change', function() { 
    alert(1); 
}); 
+1

working .. thanks .. !! – Billy

+0

@ user2892997歡迎高興幫忙:) –

0

我認爲這是一個壞主意,使標識符看起來像一個數組。 也許你可以使用'數據'屬性?

我編輯你的代碼一點點:

HTML

<?php for($i=0;$i<2;$i++) { ?> 
<select id="name" data-index="[<?php echo $i;?>]"> 
    <option value="John">John</option> 
    <option value="Alice">Alice</option> 
</select> 

<input type="text" id="name-id"> 

<input type="text" id="location"> 

<?php } ?> 

JS

$('body').on('change',"select#name", function() { 
     alert($(this).data("index")); 
    });