2013-03-06 2 views
0

на дисплее у меня уже установлен флажок.получение текущих проверочных значений флажка

Я хочу недавно проверенные значения, но приведенный ниже код возвращает все флажки, включая уже проверенное значение.

я хочу, чтобы вновь проверил значение от Спасибо заранее

кода:

function updatePermissions(data){ //function 

    var chkdValue = null; 

    var permissions = data.split(";"); 
    var htmlData = document.getElementsByName("permission");//name of checkboxes 
    for(var k=0;k<htmlData.length;k++){ 
     if(htmlData[k].checked==true){ 
      var chkdids = htmlData[k].value; 
      alert(chkdids); 
     } 

    } 
+3

как вы ожидаете Javascript вернуться только «недавно проверили» коробки? 'checked == true' проверяет флажок. Это зависит от вас, чтобы поддерживать состояние и манипулировать им. – asgs

+0

Вам нужно объяснить немного больше, что вы хотите сказать «недавно». Я думаю, что еще несколько данных в порядке. – zozo

ответ

0

Собирается нужен лучше понять ваш код, но то, что вы могли бы сделать это вы можете добавить eventListener каждый флажок поэтому, когда он изменится, он переместит значение этого флажка в массив. Это действительно зависит от того, как вы определяете «недавно» ... это означает, что в течение того же сеанса? Или, может быть, через х количество времени? Может быть, вы можете сделать setTimeout и через некоторое время просто очистить массив?

var checkedArray = []; 
var permissions = data.split(";"); 
$('input[name=permission]').change(function() { 
    if (this.checked) { 
    checkedArray.push(this.value); 
    } 
} 
//checkedArray should populate with values of checkbox 

setTimeout(function() { checkedArray = []; }, 10000); 
//after 10 seconds it will clear checkedArray 

FYI не уверен, действительно ли этот код будет работать. Просто идея.

0

что-то вроде этого ... думаю. У меня создается впечатление, что вы хотите получить такую ​​ценность. Итак, я помещаю eventListerns в флажки. Когда они будут нажаты ... предупредите значение. Конечно, вы можете установить глобальный obj для массива и направить их туда для последующей обработки .. и т. Д., Но идея состоит в том, чтобы фиксировать значения на лету. В обратном вызове вы можете поставить «проверенный» тест.

var checkBxs = document.getElementsByName("permission"); 
    for(var i = 0; i < checkBxs.length; i++){ 
    checkBxs[i].addEventListener("click", function(){console.log(this.value)}, false); 
    } 

используя собственный javascript. Вы не указали jQuery.

1

Вы можете использовать код, похожий на следующий пример. Здесь я использую хеш-таблицу для записи изменений в этот флажок. Только когда установлен флажок, хеш-таблица устанавливается. когда вы нажимаете кнопку «Отправить», я извлекаю все значения из хэш-таблицы и отображаю их в сообщении. Вы можете напрямую скопировать этот код в свою IDE и протестировать. Вы лучше поймете

<html> 
<head> 
<script> 
     var flag={}; 
     function set(obj) 
     { 
      if(document.getElementById(obj.id).checked) 
      flag[obj.id]=obj.id; 
     } 

     function checknew() 
     { 

      for (key in flag) { 
       alert(flag[key]); 
      } 
      for (key in flag) { 
       delete flag[key]; 
      } 

     } 
     </script> 
    </head> 
    <body> 
    <input type="checkbox" id="first" onclick="set(this)"/> 
    <input type="checkbox" id="second" checked="checked" onclick="set(this)"/> 
    <input type="button" value="submit" onclick="checknew()"/> 

    </body> 
</html> 
+0

вам нужно установить проверочно в массив при времени загрузки тоже – mplungjan

+0

нет необходимости этот код проверяет только на изменения и, следовательно, не нужно устанавливать проверенный массив во время загрузки. Скопируйте код и проверьте один раз. Вы поймете лучше. –

+0

. См. Мой ответ для более простого решения. – mplungjan

0

Вам просто нужно проверить defaultChecked свойство коробки

if(htmlData[k].checked && !htmlData[k].defaultChecked){ 
    var chkdids = htmlData[k].value; 
    alert(chkdids); 
} 
Смежные вопросы