如何获取数组的长度并相应地进行验证

时间:2017-03-22 07:00:43

标签: jquery

我正在尝试进行验证,其中我检查数组的长度,如果数组长度为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,怎么样? 帮助

2 个答案:

答案 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之前,你分配数组值。

&#13;
&#13;
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;
&#13;
&#13;