2017-10-16 21 views
1

テーブルでは、スキップ日の列の場合、最後の行の既定値は常に数値ではない「last」という語になります。さて、結果の日付は "NaN/NaN/NaN"と表示されます。これはNilのようなsthで置き換えることができます。NaN/NaN/NaNを取り除く方法

多くのありがとうございます。ここで

$('input.date, input.day').on('change', function() { 
 
var $row = $(this).closest('tr'); 
 
var start = $row.find('.date').val(); 
 
if (start) { 
 
    var set = new Date(start); 
 
    set.setDate(set.getDate() + Number($row.find(".day").val())); 
 
    $row.find(".result").val([set.getMonth() + 1, set.getDate(), set.getFullYear()].join('/')); 
 
    var dt = set.getFullYear() + "-" + ("0" + (set.getMonth() + 1)).slice(-2) + "-" + ("0" + set.getDate()).slice(-2); 
 
    $row.next('tr').find('.date').attr('value', dt).trigger('change'); 
 
} 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table id="one"> 
 
    <th>Date</th> 
 
    <th>Skip days</th> 
 
    <th>Result</th> 
 
    <tbody> 
 
    <tr> 
 
     <td><input type="date" class="date"></td> 
 
     <td><input type="text" value="10" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td><input type="date" class="date"></td> 
 
     <td><input type="text" value="15" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td><input type="date" class="date"></td> 
 
     <td><input type="text" value="last" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

'day'の入力を' text'から 'number'に変更してみませんか?数字入力だけが必要なので意味があります。これにより 'NAN'も削除されます – NewToJS

+0

スキップ日の最後の行がデフォルト値になります。それは数字ではありません – epiphany

+0

ここに例がありますhttps://jsfiddle.net/1ayn5tng/あなたはおそらく私の例はあなたが望むものではないので、最後のデフォルト値を持つだろう。 – NewToJS

答えて

1

私はinput.day値をチェックするためにiSNaNを使用しました

$('input.date, input.day').on('change', function() { 
 
    var $row = $(this).closest('tr'); 
 
    var start = $row.find('.date').val(); 
 
    
 
    if (!isNaN($row.find(".day").val()) && start) { 
 
    var set = new Date(start); 
 
    set.setDate(set.getDate() + Number($row.find(".day").val())); 
 
    $row.find(".result").val([set.getMonth() + 1, set.getDate(), set.getFullYear()].join('/')); 
 
    var dt = set.getFullYear() + "-" + ("0" + (set.getMonth() + 1)).slice(-2) + "-" + ("0" + set.getDate()).slice(-2); 
 
    $row.next('tr').find('.date').attr('value', dt).trigger('change'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table id="one"> 
 
    <th>Date</th> 
 
    <th>Skip days</th> 
 
    <th>Result</th> 
 
    <tbody> 
 
    <tr> 
 
     <td><input type="date" class="date"></td> 
 
     <td><input type="text" value="10" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td><input type="date" class="date"></td> 
 
     <td><input type="text" value="15" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td><input type="date" class="date"></td> 
 
     <td><input type="text" value="last" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 
</tbody> 
 
</table>

溶液で行く

これがあなたを助けてくれることを願っています。

+0

@ tam Welcome buddy :) – Shiladitya

+0

私は1日にスキップするように変更しようとすると、開始日は結果の日付と同じですか?ありがとう – epiphany

+0

私はそれを修正しました、タイムゾーンの問題 – epiphany

1

のような値でNullの値を上書きするように、手動で最後のセルを手動で更新することもできます。

これは、次の例で見ることができます。

$('input.date, input.day').on('change', function() { 
 
    var $row = $(this).closest('tr'); 
 
    var start = $row.find('.date').val(); 
 
    if (start) { 
 
    var set = new Date(start); 
 
    set.setDate(set.getDate() + Number($row.find(".day").val())); 
 
    $row.find(".result").val([set.getMonth() + 1, set.getDate(), 
 
     set.getFullYear() 
 
    ].join('/')); 
 
    var dt = set.getFullYear() + "-" + ("0" + (set.getMonth() + 
 
     1)).slice(-2) + "-" + ("0" + set.getDate()).slice(-2); 
 
    $row.next('tr').find('.date').attr('value', dt).trigger('change'); 
 
    } 
 
    $("#one tbody tr:last-of-type .result")[0].value = 'Nil'; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<table id="one"> 
 
    <th>Date</th> 
 
    <th>Skip days</th> 
 
    <th>Result</th> 
 
    <tbody> 
 
    <tr> 
 
     <td> 
 
     <input type="date" class="date"></td> 
 
     <td><input type="text" value="10" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td> 
 
     <input type="date" class="date"></td> 
 
     <td><input type="text" value="15" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td> 
 
     <input type="date" class="date"></td> 
 
     <td><input type="text" value="last" class="day"> </td> 
 
     <td><input type="text" class="result"> </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

は、この情報がお役に立てば幸い! :)

+0

ご協力いただきありがとうございます – epiphany

関連する問題