2015-05-21 1 views
0

У меня есть много checkbox элемента на моем Grails form, один такой:моего флажок значения пропуска даже бесконтрольно - Grails

<g:checkBox id="consolidate" name="consolidate" value="${true}" checked="${false}" /> 

Тогда на приемный controller, я проверяю значение checkbox с помощью этого code:

println params?.consolidate 

И это показывает:

on 

Независимо от того, отмечен ли я галочкой или нет. На другом языке, если флажок не отмечен, его значение на контроллере будет null или undefined. Какая должна быть его ценность при снятии флажка, и каков правильный код для доступа к его значению на контроллере grails?

Временное решение:

Следующий код (на JavaScript) является то, что я временно использовал, чтобы приспособить мое требование. Хотя то, что я хочу, является объяснением или, возможно, исправлением этого поведения.

var serialized_string = ""; 
$("#form input").each(function(i, j) { 
    var o = $(j); 
    if(o.val() !== undefined && o.val() !== "undefined" && o.val() !== "") { 
     if(serialized_string === "") { 
      serialized_string += o.attr("name") + "="; 
     } 
     else { 
      if(o.attr("name") === "consolidate") { 
       var val = "false"; 
       if(o.prop("checked")) { 
        val = "true"; 
       } 
       data += val; 
      } 
      else { 
       data += "&" + o.attr("name") + "="; 
      } 
     } 
    } 
}); 
+0

Каков источник снятого флажка? Подскажите, что ваша проблема имеет какое-то отношение к 'checked =" $ {false} "' –

+0

@joshua. Я также пробовал без тега 'checked', но он все еще не работает. – Gideon

+0

потому что значение флажка истинно. – user1690588

ответ

1

Если флажок установлен, вы видите на вы видите; в противном случае вы видите null, который является вашим фальшивым.

+0

Но независимо от того, является ли он 'checked' или' unchecked', он всегда передает значение 'on'. – Gideon

+0

Странно! Некоторое время назад я столкнулся с тем же вопросом. У меня была таблица, в которой два столбца были использованы для флажков без объекта домена для привязки. Проверка с помощью println всей карты параметров показала, что существует только два значения, которые имеет флажок: ** on ** или ** null **. – mohsenmadi