【发布时间】:2014-12-02 15:00:38
【问题描述】:
我有以下 javascript 代码的 sn-p 代码,它应该用作我的表单验证,以确保当用户提交表单时没有任何字段为空。该代码适用于“Detector_Type”作为其默认值为 ""。
但是,当我将文本添加到下一个字段“Name_and_Part_Number”并尝试提交时,即使我在文本字段中输入了文本,该值仍会在控制台日志中显示为“未定义”。
为什么会发生这种情况,我该如何做才能使当我输入文本时它不再变得未定义?
编辑 1:存储在表单中的数据存储为 RoR 变量,这可能会有所不同。
JS代码:
function validateForm(formId)
var fields = ["Detector_Type", "Name_and_Part_Number", "Type", "FPA_Size", "Pitch"]
var errors = ["Detector Type", "Name and Part Number", "Type", "FPA Size", "Pitch"]
var i, l = fields.length;
var fieldname;
for (i = 0; i < l; i++) {
fieldname = fields[i];
console.log(fieldname + ": " + document.getElementById(fieldname).value);
if ((document.getElementById(fieldname).value === "") || (typeof document.getElementById(fieldname).value === 'undefined'))) {
alert(errors[i] + " can not be empty");
return false;
}
}
return true;
}
}
HTML 代码:
...
<div class="field">
<%= f.label :Detector_Type %><br>
<select class="flat-text" style="width: 240px;" name='spreadsheet[Detector_Type]' id='Detector_Type' onclick="toggle_visibility('Detector_Type');" >
<option value=''>Choose a category...</option>
<option value="GMAPD">GMAPD</option>
<option value="DFPA">DFPA</option>
<option value="Other">Other </option>
</select>
</div>
<div class="field" id="Name_and_Part_Number">
<%= f.label :Name_and_Part_Number %><br>
<%= f.text_field :Name_and_Part_Number%>
</div>
<div class="field" id= "Type">
<%= f.label :Type %><br>
<%= f.text_field :Type %>
</div>
<div class="field" id= "FPA_Size">
<%= f.label :FPA_Size %><br>
<%= f.text_field :FPA_Size %>
</div>
<div class="field" id= "Pitch">
<%= f.label :Pitch %><br>
<%= f.text_field :Pitch %>
</div>
...
【问题讨论】:
标签: javascript html ruby-on-rails validation