Неопознаваемый флажок только для чтения установлен в JQuery / Javascript - PullRequest
2 голосов
/ 18 февраля 2020

У меня есть параметры с возможностью редактирования и сохранения. Например, в таблице ниже

Имя_параметра Тип1 Тип2 Тип3

Test rdb (checkBox) rdb (checkBox) rdb (checkBox) Редактировать (кнопка)

Если я нажму кнопку «Изменить», строка будет включена, и мне нужно будет выбрать любой флажок одного типа и сохранить тип. При сохранении значения флажка типа я присвоил значение rdb = 't'. Это 't' сохранит его в базе данных. Теперь я сталкиваюсь с проблемой. Когда флажок установлен, значение становится нулевым. Ниже используется код.

Mange_Page. html .erb

<script>
    $('.editoidbtn').click(function() {
        var $this = $(this);
        var oid = $this.closest('tr').find('td:first-child').filter(function() {
            return $(this).find('.editoidbtn').length === 0;
        });
        var oidName = $this.closest('tr').find('td:first-child').next().filter(function() {
            return $(this).find('.editoidbtn').length === 0;
        });
        var expected = $this.closest('tr').find('td:first-child').next().next().filter(function() {
            return $(this).find('.editoidbtn').length === 0;
        });

        if ($this.html() === 'Edit') {
            $this.html('Save');
            oid.attr('contenteditable', true);
            oidName.attr('contenteditable', true);
            expected.attr('contenteditable', true);
            $this.closest("tr").find("input[name='rd_b']").attr('disabled', false);
            $this.closest("tr").find("input[name='rd_v']").attr('disabled', false);
            $this.closest("tr").find("input[name='rd_c']").attr('disabled', false);
            $this.closest("tr").find("input[name='review']").attr('disabled', false);
            $this.closest('tr').css('border',  " solid skyblue");
        }
        else {

            if ($this.html() === 'Save') {
                saveRows($this);
                $this.html('Edit');
                oid.attr('contenteditable', false);
                oidName.attr('contenteditable', false);
                expected.attr('contenteditable', false);
                $this.closest("tr").find("input[name='rd_b']").attr('disabled', true);
                $this.closest("tr").find("input[name='rd_v']").attr('disabled', true);
                $this.closest("tr").find("input[name='rd_c']").attr('disabled', true);
                $this.closest("tr").find("input[name='review']").attr('disabled', true);
                $this.closest('tr').css('border', 'none');
            }
        }
    });

Java script

function saveRows($this){

    tr181 = $('#TR_protocol').is(":visible");
    snmp = $('#SN_protocol').is(":visible");

    var values = [];
    var $row = $this.closest("tr"),
    $tds = $row.find("td");
  count = 0;
  $.each($tds, function() {
   values[count]=$(this).text();
    count++;
  });

  if(tr181){
   var parameter_name = values[0].trim();
   var expected_value = values[1].trim();
    if($row.find("input[name='rd_b']").attr('checked')){
      var rdb = 't'
     }else{
       rdb =null;
     }
    if($row.find("input[name=rd_v]").attr('checked')){
    var rdv = 't'
    }else{
     rdv =null;
    }
    if($row.find("input[name=rd_c]").attr('checked')){
      var rdc = 't'
    }else{
      rdc =null;
    }
    if($row.find("input[name=reviews]").attr('checked')){
        var review = null;
      }

    $.ajax({    
      type: "POST",
      contentType: "application/json",
      url: "/configuration/update_parameter",
      data: JSON.stringify({
        parameter_name: parameter_name,
        expected_value: expected_value,
        rdb: rdb,
        rdv: rdv,
        rdc: rdc,
        review: review,
       }),
        beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
        success: function (result) {
        if (result === 'false') {
            alert('Parameter not Updated  !!!');
            return false;
         } else {
            alert('Parameter Updated successfully  !!!');
          }
        }
     });
   }
 }
 }

Из нижней части я получаю Ajax ответ как nil. Когда я нажимаю кнопку «Сохранить», управление переходит к другой части события, хотя у меня установлен флажок. Это должно go со значением 't'.

if($row.find("input[name='rd_b']").attr('checked')){
      var rdb = 't'
     }else{
       rdb =null;
     }

1 Ответ

1 голос
/ 18 февраля 2020

Я думаю, проблема в том, что ваш код для проверки значения, если проверен или нет?

Вы пытались использовать,

example: .find("input[name=rd_v]").is(':checked') # returns true or false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...