用Moment.js检查hh:mm格式是否有效

Check if valid hh:mm format with Moment.js

本文关键字:mm 格式 是否 有效 hh Moment js 检查      更新时间:2023-09-26

我试图从Moment.js表中求和时间(格式hh:mm)。

这是我的js

function timemanage(){
        $('.lebih').each (function() {
            if(moment('.lebih', 'hh:mm').isValid()){
                var value = $(this).text();
                    if(!isNaN(value) && value.length != 0) {
                    sum += parseFloat(value);
                    }
                    $('.jamlebih').val(sum); 
            }else{
                alert("No");
            }
        });
    }
  $(document).ready(function(){
    timemanage();   
  });
<table class="table">
<thead>
    <tr>
        <td> No </td>
        <td> Full Name </td>
        <td> Attendance Date </td>
        <td> In Time </td>
        <td> Out Time </td>
        <td> Waktu Lebih </td>
    </tr>
</thead>
<tbody>
<tr>
    <td>1</td>
    <td>[1602744] - RAHMAT </td>
    <td>2016-08-28</td>
    <td class="jammasuk">
        08:55:00                                        
    </td>                                                                           
    <td class="jampulang">
    16:03:00                                        
    </td>
    <td class="lebih">Jam Kerja Kurang Dari 8 Jam</td>
    </tr>
    <tr>
    <td>2</td>
    <td>[1602744] - RAHMAT </td>
    <td>2016-08-29</td>
    <td class="jammasuk">
        08:55:00                                        
    </td>                                                                           
    <td class="jampulang">
    16:03:00                                       
     </td>
    <td class="lebih">Jam Kerja Kurang Dari 8 Jam</td>
    </tr>
    <tr>
    <td>3</td>
    <td>[1602744] - RAHMAT </td>
    <td>2016-08-30</td>
    <td class="jammasuk">
    08:55:00                                        
    </td>                                                                           
    <td class="jampulang">
    16:03:00                                        
    </td>
    <td class="lebih">Jam Kerja Kurang Dari 8 Jam</td>
    </tr>
   <tr>
    <td>4</td>
    <td>[1602744] - RAHMAT </td>
    <td>2016-08-31</td>
    <td class="jammasuk">
        08:55:00                                        
    </td>                                                                           
    <td class="jampulang">
    18:03:00                                        
    </td>
    <td class="lebih">01:08</td>
    </tr>
     <tr>
        <td colspan="4"> </td>
        <td>Total Jam Lebih</td>
         <td>
         <input name="jamlebih" type="text" readonly disabled class="jmljam" />
         </td>
    </tr>
     <tr>
        <td colspan="4"> </td>
        <td>Ro Yang DiDapatkan</td>
         <td>
         <input name="dapetro" type="text" readonly disabled class="ronya" />
         </td>
    </tr>
</tbody>
</table>

我已经阅读了文档,但我看不到如何检查格式hh:mm是否有效的任何部分。我的脚本上面,我总是收到警报no

这是我的小提琴。

我看不懂你页面上的文字,但我已经尽了最大的努力去理解你的解释。请注意,为了测试的目的,我还更改了一个时间框,将两个值添加在一起。

正如在你的帖子评论中解释的那样,你需要给momentjs一个值来解析,那就是$(this).text()。但是momentjs在解析中是非常宽容的。它仍然会解析文本中的"8"。所以你必须用'true'作为第三个参数初始化你的时刻,像这样:var thisMoment = moment(value, 'hh:mm', true);。这将启用严格解析,因此moment将不会解析'8'。

使用moment的内置.add(object)将两个moment添加在一起也是一个不错的主意。因为我们只使用hh:mm,所以我使用var total = moment().startOf('day')来给我们一个可以添加到12:00:00的干净的石板。

您还试图更改一个不存在的类的值。当你真正想通过输入名称获得它时,你有$('.jamlebih').val(sum);(或者你可以自己添加类,如果你愿意的话),像这样:$("input[name='jamlebih']")