我正在尝试进行验证,其中我检查数组的长度,如果数组长度为0,那么我显示警告,但是当我单击“保存”按钮时,默认数组长度显示为1。 这是我的代码:
var skill=[];
$('#save_skills').on("click",function(){
var i = 0;
$('input.skill').each(function(index) {
skill[i] = $(this).val();
importanceSkill[i] = $('.importance').eq(index).find('option:selected').text();
alert(skill.length)
if(skill.length === 0)
{
alert("Please Provide Value");
return;
}
else
{
$('#table_display_skills').append('<tr><td>'+ skill[i] +'</td><td>'+ importanceSkill[i] +'</td><td><span class="ui-icon ui-icon-close" onclick="remove_skills()"></span></td></tr>');
i = i + 1;
}
});
如果我alert (skill.length)
它将我显示为1,怎么样?
帮助
答案 0 :(得分:1)
当此行:skill[i] = $(this).val();
运行时,您的数组正在存储1个元素,即使<input>
的值为空,您的数组也会存储1个空字符串元素。
我确定你想要的是检查每个$('input.skill')
是否有价值,所以你需要像这样纠正你的脚本:
变化:
$('input.skill').each(function(index) {
到
$('input.skill').each(function(i) {
然后在$('input.skill').each(function(i) {
:
if (!$(this).val().length) {
alert("Please Provide Value");
return;
}
skill[i] = $(this).val();
$('#table_display_skills').append('<tr><td>'+ skill[i] +'</td><td>'+ importanceSkill[i] +'</td><td><span class="ui-icon ui-icon-close" onclick="remove_skills()"></span></td></tr>');
//i = i + 1; (you won't need this anymore)
答案 1 :(得分:0)
在调用长度显示你得到1之前,你分配数组值。
var skill=[];
alert(skill.length);
skill[0] = 'ram'//$(this).val(); // You assigne value here. See a diiff on alert box
alert(skill.length);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;