我有一个HTML表单,显示一个表格,用户可以扫描产品条形码,将序列号输入到文本输入字段中,如下所示:
<td id="9856623"><input type="text" class="form-control serialNumber" placeholder="Serial #" name="serialNumber" autocomplete="off" value=""></td>
当光标位于输入字段中时,用户扫描条形码以将条形码值插入此输入字段,然后触发在后台运行的脚本以通过PHP进行数据库更新。我们需要检查序列号中被扫描的第一个字符是否为&#39; S&#39;如果是,那么删除它。我们在PHP中处理这个:
$serialNumber = 'STRQWEF412421';
$serialFirstChar = substr( $serialNumber , 0, 1);
if ($serialFirstChar == 'S') {
$serialNumber = substr($serialNumber, 1);
}
但我现在需要在Javascript中执行相同的操作来更新输入的文本输入字段中的序列号,因此也要删除前导的&#39; S&#39;角色,如果存在。这是输入序列号时运行的当前脚本:
$(document).ready(function() {
$(".form-control.serialNumber").change(function() {
//$("input[type='text']").change(function(){
//alert( "Handler for .change() called." );
var parent = $(this).parents('tr');
var recid = $(this).closest('td').attr('id');
var serialNumber = $(this).val();
// Create a reference to $(this) here:
$this = $(this);
$.post('updateAsset.php', {
type: 'updateDatabase',
recid: recid,
serialNumber: serialNumber
}, function(data) {
data = JSON.parse(data);
if (data.error) {
var ajaxError = (data.text);
var errorAlert = 'There was an error updating the Serial Number - ' + ajaxError + '. Please contact the Helpdesk';
$this.closest('td').addClass("has-error");
//display AJAX error details
$("#serialNumberErrorMessage").html(errorAlert);
$("#serialNumberError").show();
return; // stop executing this function any further
} else {
var dateReceived = (data.dateReceived);
$this.closest('td').addClass("has-success")
$this.closest('td').removeClass("has-error");
$this.closest('tr').children('.DateReceived').html(dateReceived);
// if you want to show a success alert enable the following
// $("#ajaxAlert").addClass("alert alert-success").html(data.text);
}
}).fail(function(xhr) {
var httpStatus = (xhr.status);
var ajaxError = 'There was an error updating the Serial Number - AJAX request error. HTTP Status: ' + httpStatus + '. Please contact the Helpdesk';
$this.closest('td').addClass("has-error");
//display AJAX error details
$("#serialNumberErrorMessage").html(ajaxError);
$("#serialNumberError").show();
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
此时我不知道如何解决此问题,以及我是否可以更新现有脚本以更新输入的序列号并删除任何领先的&#39; S&#39;字符?
答案 0 :(得分:3)
您可以使用 string#charAt()
和 string#substring()
,如下所示:
var serialNumber = 'STRQWEF412421';
if (serialNumber.charAt(0) === 'S') {
serialNumber = serialNumber.substr(1);
}
console.log(serialNumber);
修改强>
因此,要为input
应用此代码,您需要将其添加到change
事件处理程序中,如下所示:
$(".form-control.serialNumber").change(function() {
var serialNumber = $(this).val();
if (serialNumber.charAt(0) === 'S') {
$(this).val(serialNumber.substr(1));
}
//Rest of the code
});
答案 1 :(得分:3)
您可以使用Javascript的startsWith
。如果第一个字符是S
,请将其从字符串中删除:
// for debugging
serialNumber = 'STRQWEF412421';
if (serialNumber.startsWith('S'))
serialNumber = serialNumber.substring(1);
console.log(serialNumber);
答案 2 :(得分:0)
如果裁剪第一个字母是你想要的,那么这可以帮助;
let stringFromScanner = "ScannedString";
if(stringFromScanner.substr(0,1) == "S" || stringFromScanner.substr(0,1) == "s") {
stringFromScanner.slice(1,stringFromScanner.length);
}