jQuery 0而不是Nan

时间:2016-01-09 20:35:28

标签: javascript jquery radio-button nan

我用jQuery创建了一个问卷。 每个问题有5个单选按钮。 value = 0,value = 1,value = 2,value = 3,value = 4

如果有人回答什么,我想设置值0。 现在将" NaN"推入我的阵列。我无法找到灵魂。

<div class="tab-pane active" role="tabpanel" id="step1">                                
<div class="qhead">
    <h3>Leadership</h3>
    <span class="underline-small"></span>
</div>
<div class="questions">                             
    <!-- Fragen -->
    <div class="row">
        <h4>Das ist Frage 1</h4>                                    
    </div>
    <div class="row">
        <p>Das ist Frage 1</p>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <div class="row">
        <p>Das ist Frage 2</p>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <div class="row">
        <p>Das ist Frage 3</p>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <div class="row">
        <p>Das ist Frage 1</p>
        <label class="radio radio-inline"><input type="radio" name="q4" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <!-- Fragen Ende -->
</div>
<ul class="list-inline pull-right padtop">
    <li><button type="button" class="btn btn-primary next-step">Speichern und weiter</button></li>
</ul>

$(".done").click(function (e) {
//Count Questions
var step1  = $("#step1 p").length;
var step1a = 1;                 
var step1e = step1a + step1;

var questionnaire1 = []
for (var i=step1a; i<step1e; ++i ){
  var finalVar = "input[name='q"+i+"']:checked";
  var varCont = parseInt($(finalVar).val());
  questionnaire1.push(varCont);     
}
}); 

示例:结果为[1,4,NaN,3,0] 为了正确的数据,我需要[1,4,0​​,3,0]

我用if语句尝试过,但这也行不通。

$(".done").click(function (e) {
//Count Questions
var step1  = $("#step1 p").length;
var step1a = 1;                 
var step1e = step1a + step1;

var questionnaire1 = []
for (var i=step1a; i<step1e; ++i ){
var finalVar = "input[name='q"+i+"']:checked";
if($(finalVar).val() == "NaN") 
{questionnaire1.push(0)}
else{questionnaire1.push($(finalVar).val());}   
}
}); 

2 个答案:

答案 0 :(得分:0)

你应该遍历每一行(问题)并从中获取选中的单选按钮并使用该值。如果未选中任何内容,请使用0。

$(".done").click(function (e) {

   var questionnaire1 = [];

   $.each($(".row"),function(x,y){

      var c= $(y).find("input[type]:checked");

      var v=0;
      if(c.length)
      {
        v=parseInt(c.val());
      }
      questionnaire1.push(v);

   });
  console.log(questionnaire1);
}); 

Here正在运行样本

答案 1 :(得分:0)

你第二次尝试几乎得到了它。你错过了这个事实,.val()如果没有选择选项而不是null,则返回"NaN"NaN只是您拨打parseInt()失败的结果。

为了适应这种变化:

  var val = $(finalVar).val();
  if ( val == null) {
    questionnaire1.push(0)
  } else {
    questionnaire1.push( parseInt( val, 10 ) );
  }

Example Fiddle