Как заполнить серию флажков из скрытого поля CSV, используя JQuery - PullRequest
0 голосов
/ 26 августа 2010

У меня есть форма с кучей флажков и скрытое поле, содержащее данные CSV.По сути, мне нужно установить флажки на основе значения скрытого поля:

<form>

    <input type="checkbox" id="01" name="01" />
    <input type="checkbox" id="02" name="02" />
    <input type="checkbox" id="03" name="03" />

    <input type="hidden" value="03,01," />

</form>

Итак, в приведенном выше примере флажки 01 и 03 должны быть отмечены, когда страница закончила загрузку.Мне также нужно убедиться, что при изменении значения флажков также будет скрыто поле CSV (хотя, возможно, это можно сделать при отправке формы?).

Мои ограниченные знания jQuery ни к чему не привелиэто, любая помощь будет высоко ценится.(Я знаю, что кое-что из этого лучше всего сделать на стороне сервера, но у меня нет доступа ни к чему, кроме javascript).

Ответ ниже выполняет большую часть того, что я хочу.Я думаю, что, используя созданные переменные, должно быть возможно повторно заполнить поле CSV, когда форма отправляет.то есть, используя selected_ids для добавления идентификаторов отмеченных полей в конец CSV (если они еще не присутствуют).Можно ли это сделать?

Ответы [ 2 ]

1 голос
/ 26 августа 2010
var csvValue = $('#csv-input').val();
var selected_ids = csvValue.split(',');
for (var i = 0; i < selected_ids.length; i++)
{
    var selected_id = selected_ids[i];
    $('#' + selected_id).attr('checked', 'checked');
}
0 голосов
/ 27 августа 2010
$(':checkbox').bind('change', function(event){
    if (this.checked == true){
      // add to hidden field
      var tempIdStr = $('#cvs-input').val();
      // if not in hidden value already
      if (tempIdStr.indexOf(this.id) > -1){
          tempIdStr += "id,"; // or ", id" depending on how you are seperating the ids
         $('#cvs-input').val(tempIdStr);
      }
    } else {
    // remove from hidden field
      var tempIds = $('#cvs-input').val().split(',');
      var index = tempIds.indexOf(this.id);
      if (index > -1){
          tempIds.splice(index, 1);
          $('#cvs-input').val(tempIds.join(',');
    }
});
...