2015-04-20 2 views
1

Я работаю на странице, где я использую js, php, jquery для сохранения значения поля ввода флажка в массиве javascript, а позже я использую этот массив, но я не знаю, почему, когда я удаляю поля из цикла php foreach и вручную дает другое значение каждого флажка все отлично работает, как вы можете видеть в jsfiddle, который работает нормально, то первый показ привет, чем привет, би и в прошлом привет, би, до свидания, как ожидалось ,Как заставить триггерную функцию jQuery запускать все события в forloop?

Но когда я заселение значения этого поля ввода, используя Еогеасп цикл PHP, это первый показ пустого, чем привета чем привета, би и не отображает последнюю привет, би, проститься. Я не знаю, где я получаю эту ошибку.

мой html-код;

<input type="checkbox" id="selectall"/>Select all<br> 
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="hi" onclick="click_alert(this.value)"/>Check box 1<br> 
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="bi" onclick="click_alert(this.value)"/>Check box 2<br> 
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="goodby" onclick="click_alert(this.value)"/>Check box 3<br> 

следующее - это мой код php для поля ввода.

<?php 
foreach ($result as $value) 
{ 
?> 
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="<?= $value['p_id'] ?>" onclick="showPause('show_hide_multi_pause')"/> 
<?php 
} 
?> 

Ниже приведен результат массива

Array 
(
    [0] => Array 
     (
      [p_id] => 110 
      [left(p_title,30)] => Samsung GALAXY Note II N7100 [ 
      [left(p_features,30)] => OS : Android , Display : 4.8&q 
      [p_status] => 1 
      [od_price] => 800 
      [od_offer_price] => 750 
      [pi_image1] => Samsung-Galaxy-S3-Neo_1_110.jpg 
      [o_sqty] => 65 
      [o_cond] => New 
      [od_htime] => 2 Business days 
     ) 

[1] => Array 
    (
     [p_id] => 127 
     [left(p_title,30)] => Samsung Galaxy Note Edge SM-N9 
     [left(p_features,30)] => this is DeMo FeAtUrE 
     [p_status] => 1 
     [od_price] => 654 
     [od_offer_price] => 
     [pi_image1] => Samsung Galaxy Note Edge SM-N915G_1_127.jpg 
     [o_sqty] => 65 
     [o_cond] => Old 
     [od_htime] => 
    ) 
) 

и я вставив входное значение, как $value['p_id'].

+2

Пожалуйста, напишите php foreach loop –

+0

@PedroLobito, пожалуйста, проверьте, что я редактировал вопрос и добавил php-код и массив, хотя он не совсем похож на js скрипку или выше html-кода. –

ответ

1

Мы не можем использовать тот же Id для нескольких элементов в одной странице. Вместо использования Id вы можете использовать класс для каждого флажка. Например, Вместо $('input#live_prod_input').each(function() {})

использование $('input.live_prod_input').each(function(){})

в следующих флажок

<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="hi" onclick="click_alert(this.value)"/>Check box 1<br>

Заменить выше Id с класса.

0

Я воспроизведен код на моем сервере, и он работает с небольшим изменением:

На петле php попробуйте изменить

onclick="showPause('show_hide_multi_pause')" 

в

onclick="click_alert(this.value)" 

Это PHP которая работает для меня:

foreach ($result as $value) 
{ 
$p_id = $value['p_id']; 
echo <<< LOB 
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="$p_id" onclick="click_alert(this.value)"/> 
LOB; 
} 

ПОЛНОЕ HTML КОД:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script> 
window.click_alert = function(val) //equivalent to function click_alert() 
{ 
    csv_pause = []; 
     var chboxs = document.getElementsByName("live_prod_chk"); 
     for (var i = 0; i < chboxs.length; i++) { 
      if (chboxs[i].checked) { 
       csv_pause.push(chboxs[i].value); 
      } 
     } 
    alert(csv_pause); 
} 



    $(document).ready(function() { 
    $('#selectall').click(function() { //on click 
     if(this.checked) { // check select status 
      $('input#live_prod_input').each(function() { //loop through each checkbox 
//    this.checked = true; //select all checkboxes with class "checkbox1" 
       $(this).trigger('click'); 
//    $('input#live_prod_input').trigger('click'); 
      } 

        ); 
     }else{ 
      $('input#live_prod_input').each(function() { //loop through each checkbox 
       this.checked = false; //deselect all checkboxes with class "checkbox1"      
      });   
     } 
    }); 
    }); 
</script> 
</head> 
<body> 


<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="110" onclick="click_alert(this.value)"/> 
<input id="live_prod_input" type="checkbox" name="live_prod_chk" value="120" onclick="click_alert(this.value)"/> 
</body> 
</html> 
+0

Это не сработало. –

Смежные вопросы