2017-07-07 36 views
3

我有一個應用程序,用戶在起始條形碼中掃描或類型,結束條形碼根據數量值自動計算。如何對字符串的最後x個字符執行數學運算並更新文本框?

當起始條形碼完全是數字時,它工作正常,它執行數學計算幷包含前導零,因此結束代碼的長度正確。

我的問題是,一些小百分比的條碼不是完全數字。

條形碼長度爲14個字符。最後5個字符將始終爲數字,數量很少會超過幾百個,並且永遠不會高到足以泄漏到第6個數字中。

我不以任何方式一個JavaScript專家,剛剛我現在工作緊張我的技能 - 我希望這裏的社區能幫助我:)

這裏是我的代碼

$(document).ready(function() { 
    //leading zero fill function for barcodes 
    function pad(num, size) { 
    var s = "00000000000000" + num; 
    return s.substr(s.length - size); 
    } 
    //Function to do BC math: starting number + quantity -1 (since it's inclusive) = end. 
    function updateCode() { 
    var quantity = $(this).closest('tr').find('.quantity').val(); 
    var barstart = $(this).closest('tr').find('.barstart').val(); 
    var end = pad(parseInt(barstart, 10) + parseInt(quantity - 1, 10), 14); 
    $(this).parent().next().find('.barend').val(end); 
    } 
    $(document).on("change, keyup", ".barstart", updateCode); 
}); 

編輯試圖插入再次HTML:米,工作

<script src="//code.jquery.com/jquery-1.7.2.min.js"></script> 
<table id="formtable"> 
<tr> 
<td><input class="quantity" size="6" id="qty_1" name="qtyid_1" value="123" type="text"></td> 
<td><input class="barstart" size="15" maxlength="14" id="barstartid_1" name="barstart_1" value="" placeholder="Barcode Start" type="text"></td> 
<td><input class="barend" size="15" maxlength="14" id="barendid_1" name="barend_1" value="" placeholder="Barcode End" type="text"></td> 
</tr> 
</table> 

這裏有一個的jsfiddle:https://jsfiddle.net/g1p2xh6y/1/

用戶可以沒有它的生活,但它會爲他們節省一些頭疼(並幫助我留下好印象 - 這是一個新的演出),如果我能得到它的工作,所以我非常感謝任何幫助社區可以提供:)

謝謝!

+0

什麼輸入數據你有問題?條形碼何時不完全是數字? – PeterMader

+0

Is'barstart'是否包含條形碼的變量? – krillgar

+0

對不起,HTML沒有通過發佈,但它在jsfiddle。有3個文本字段,其中應用了類barstart,barend和數量。 條形碼通常是類似46180400117192,但有時可能是類似於4FCS0000166211 - 只是取決於指定最終收件人的什麼前綴,我猜。 – JCO

回答

0

非常感謝@admcfajn - 我不知道slice()函數存在,併爲我解決它。我不得不將零填充移動到後綴,並將其從最終值中移除,但由於它拉動了前綴而不是數學,所以這沒有問題。

下面是更新的功能:

function updateCode() { 
     var quantity = $(this).closest('tr').find('.quantity').val(); 
     var barstart = $(this).closest('tr').find('.barstart').val(); 
     var barprefix = barstart.slice(0,barstart.length-5); 
     var barendsuffix = pad(parseInt(barstart.slice(-5),10)+parseInt(quantity-1,10),5); 
     $(this).parent().next().find('.barend').val(barprefix+barendsuffix); 
} 
相關問題