2013-11-22 2 views
-1

У меня есть форма с флажками, как в нижеОтправить значение 0, если флажок не установлен

  <div class="col-xs-5 drinkingLeft"> 
      <input type='hidden' value='0' name='beer'>    
      <input type="checkbox" name="beer" id="beer"class="require-one col-xs-1" value="0"/> 
      <label for="beer" class="col-xs-10">Beer 
      </label> 
      </div> 

и в JS Я делаю ниже

$('#beer').on('change', function() { 
    this.value = this.checked ? 1 : 0; 
}).change(); 

То, что я хочу, что когда флажок это флажок, отправить значение 1, либо отправить значение 0. Если я не поле скрытого ввода

 <input type='hidden' value='0' name='beer'> 

тогда это отправить 1 для поле. Однако я хочу также убедиться, что значение 0 отправляется, когда оно не проверено. Как это сделать?

+0

Пробовал свой код в скрипку. он работает http://jsfiddle.net/4qerZ/ – MarsOne

+0

Просто снимите флажок (теперь у вас есть 2 ввода с именем пива) и сделайте с ним скрытое входное значение синхронизации (нет имени, нет значения) – Andrew

+0

@MarsOne What I хотите, установите флажок, поставьте значение 1 или отправьте значение 0. –

ответ

0

решаемые ниже

<div class="col-xs-5 drinkingLeft"> 
<input type="checkbox" name="beer" id="beer"class="require-one col-xs-1" value="0"/> 
<input id='beerHidden' type='hidden' value='0' name='beer'> 
<label for="beer" class="col-xs-10">Beer </label> 
</div> 


$('#beer').on('change', function() { 
this.value = this.checked ? 1 : 0; 
}).change(); 

$("#submit").click(function() { 
if(document.getElementById("beer").checked){ 
document.getElementById('beerHidden').disabled = true; 
} 
}); 
0

Можете ли вы попробовать это, вам нужно использовать отдельно id и name для скрытого значения id ="beerhidden".

<div class="col-xs-5 drinkingLeft"> 
     <input type='hidden' value='0' id ="beerhidden" name='beerhidden'>    
     <input type="checkbox" name="beer" id="beer"class="require-one col-xs-1" value="0"/> 
     <label for="beer" class="col-xs-10">Beer 
     </label> 
    </div> 

    $('#beer').on('change', function() { 
     $("#beerhidden").val(this.checked ? 1 : 0); 
    }); 
+0

Он отправляет оба значения –

+0

yes, он должен отправить два значения. В чем проблема ? –

+0

Как сервер знал, какой из них взять? Первый или второй? Это зависит от сервера к серверу/серверу, чтобы он поддерживал язык? PHP, возможно, принимает второе значение, тогда как java занимает первое место. Таким образом, ваш ответ не будет работать для любой ситуации ... возможно. Вы должны увидеть только один. Я не хотел посылать только одного! –

0
  1. Удалить имя = "пиво" с флажком
  2. Дайте скрытом ввести новый идентификатор, как checkbeer

$ ('# checkbeer'). На (» change ', function() {
$ (' # beer '). val (this.checked? 1: 0);}). change();

0
<div class="col-xs-5 drinkingLeft"> 
     <input type='hidden' value='0' name='hidden'>    
     <input type="checkbox" name="beer" id="beer"class="require-one col-xs-1" value="0"/> 
     <label for="beer" class="col-xs-10">Beer 
     </label> 
    </div> 



$('#beer').on('change', function() { 
     $("#beerhidden").val($(this).prop("checked")); 
}); 
0

Вы на самом деле не нужно JS для этого. Все, что вам нужно сделать, это написать скрытое поле после флажка и установите значение флажка 1:

<div class="col-xs-5 drinkingLeft"> 
    <input type="checkbox" name="beer" id="beer"class="require-one col-xs-1" value="1"/> 
    <input type='hidden' value='0' name='beer'>    
    <label for="beer" class="col-xs-10">Beer 
    </label> 
</div> 

Это: если флажок установлен, то он отвечал: 1 Если нет, то скрытый опубликовано: 0

FYI: Это как Microsoft ASP.Net MVC делает

+0

Спасибо.Но они отправляют оба значения –

+1

На самом деле, да! Затем он должен зависеть от того, как сервер получает значение. MVC Framework отбрасывает второе значение, я думаю ... – Kek

+0

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

0

Вы могли бы сделать что-то вроде этого

$("form").submit(function(event) { 
    $(this).find("input:not(:checked)").each(function() { 
     var hidden = $("<input/>").attr({ 
       type: "hidden", 
       name: input.attr("name"), 
       value: "0", 
      }); 
     hidden.insertAfter(this); 
    }); 
}); 

Когда форма отправлена, это вставляет скрытый ввод со значением 0 после каждого непроверенного ввода.

See the jsfiddle in action

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