根据单选按钮选择设置隐藏的输入值

问题描述:

我有一个清单表单,它根据正在工作的单选按钮选择来计分。当我发布表单时,我想根据单选按钮的选择从隐藏输入中获取“是”或“否”的值。根据单选按钮选择设置隐藏的输入值

由于“值”字段被一个整数用于评分,我想将一个值传递给具有相同类名的隐藏表单输入。如果所选单选按钮的值为0,则隐藏输入的值将为“否”,否则将为“是”。

我想能够通过所有无线电输入组(有很多)来迭代它。这就是我想用jQuery写英文的成绩:

对于每个无线电输入组,如果所选单选按钮的值为0,那么具有相同类别的隐藏输入的值为“否”,否则它是“是”。

我有问题的JavaScript,并希望得到一些帮助。

HTML

<!--Radio button example --> 
<li> 
    <label>Does 1 + 1 equal 10 ?</label> 
    <input type="radio" class="radio1" name="question" value="1">Yes</input> 
    <input type="radio" class="radio1" name="question" value="0">No</input> 
    <input type="hidden" value="" id="answer" class="radio1"></input> 
</li> 

预先感谢您,请让我知道如果你需要更多的信息。

+2

隐藏的名称和字段的类型输入似乎有点多余。为什么不根据收音机提供的值在服务器上设置布尔值? –

+1

'$ answer = $ _GET [“question”] ==“1”?“YES”:“NO”;'或'$ answer = $ _GET [“question”] ==“0”?“NO”:“ YES“;' - 如果PHP用[]给出问题的名称,它将是一个数组 – mplungjan

+1

事实上,我看到JavaScript非常具有挑战性......它不会被公布。 – zer00ne

$("input[type='radio']:checked").each(function(i, element) { 
     var hiddenVal = $(element).value() === "0" ? "No" : "yes" 
     $("." + $(element).attr("class") + "[type='hidden']").val(hiddenVal); 
}) 
+1

这看起来不正确。 find()或.next() – mplungjan

+1

已更新我的回答 – Joe

+0

这看起来非常好,只需要了解更多关于布尔选项的信息。 – JPB

附加一个jQuery事件RADIOBUTTON变化

$(document).ready(function() { 
    $('input.radio1[type=radio]').change(function() { //change event by class 
     if (this.value == '0') { 
      $(this.ClassName[type=hidden]).val("No"); 
     } 
     else if (this.value == '1') { 
      $(this.ClassName[type=hidden]).val("Yes"); 
     } 
    }); 
}); 

该代码可能包含语法错误,认为这是一个伪代码,并自己动手

+0

这看起来像我试图实现的。唯一的事情是它只适用于radio1。它可以遍历所有的无线电组(即无线电1,无线电2等)吗? – JPB

+1

如果没有其他单选按钮组,则可以使用$('input [type =“radio”]')作为上面代码的第2行中的选择器。 –

  1. 给出的答案,如果唯一ID您需要使用它们
  2. 如果您将[]添加到问题的名称PHP将它们视为数组,您可以使用三元来设置值$ answer = $问题= = “1” “YES” “NO”?
  3. 如果您仍然需要使用一个隐藏字段,这里是代码,不看ID,但在每个L1

$(function() { 
 
    //$("#questionnaire").on("submit", // better but not allowed in the SO snippet 
 
    $("#send").on("click", 
 
    function(e) { 
 
     e.preventDefault(); // remove when tested 
 
     $("#questionnaire ul li").each(function() { 
 
     var $checkedRad = $(this).find('input[name^=question]:checked'); 
 
     var $answerField = $(this).find("input[name^=answer]"); 
 
     $answerField.val($checkedRad.val()=="0"?"NO":"YES"); 
 
     }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<form id="questionnaire"> 
 
    <ul id="questions"> 
 
    <li> 
 
     <label>Does 1 + 1 equal 10 ?</label> 
 
     <input type="radio" class="radio" name="question1" value="1">Yes</input> 
 
     <input type="radio" class="radio" name="question1" value="0">No</input> 
 
     <input type="hidden" value="" name="answer1" class="radio"></input> 
 
    </li> 
 
    <li> 
 
     <label>Does 1 + 1 equal 20 ?</label> 
 
     <input type="radio" class="radio" name="question2" value="1">Yes</input> 
 
     <input type="radio" class="radio" name="question2" value="0">No</input> 
 
     <input type="hidden" value="" name="answer2" class="radio"></input> 
 
    </li> 
 
    </ul> 
 
    <button id="send" type="button">Click</button> 
 
</form>