我有一个 HTML 表单,显示一个表格,用户可以在其中扫描产品条形码,将序列号输入到文本输入字段中,如下所示:
<td id="9856623"><input type="text" class="form-control serialNumber" placeholder="Serial #" name="serialNumber" autocomplete="off" value=""></td>
当光标位于输入字段时,用户扫描条形码以将条形码值插入到该输入字段中,然后触发在后台运行的脚本以通过 PHP 进行数据库更新。我们需要检查扫描的序列号中的第一个字符是否是“S”,如果是,则将其删除。我们在 PHP 中这样处理:
$serialNumber = 'STRQWEF412421';
$serialFirstChar = substr( $serialNumber , 0, 1);
if ($serialFirstChar == 'S') {
$serialNumber = substr($serialNumber, 1);
}
但我现在需要在 Javascript 中执行相同的操作来更新文本输入字段中输入的序列号,因此还要删除前导的“S”字符(如果存在)。以下是输入序列号时运行的当前脚本:
$(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>
我现在不知道如何解决这个问题,也不知道我是否可以更新现有脚本以更新输入的序列号并删除任何前导“S”字符?
最佳答案
您可以使用string#charAt()
和 string#substring()
,像这样:
var serialNumber = 'STRQWEF412421';
if (serialNumber.charAt(0) === 'S') {
serialNumber = serialNumber.substr(1);
}
console.log(serialNumber);
编辑:
因此,要将此代码应用于您的输入
,您需要将其添加到change
事件处理程序中,如下所示:
$(".form-control.serialNumber").change(function() {
var serialNumber = $(this).val();
if (serialNumber.charAt(0) === 'S') {
$(this).val(serialNumber.substr(1));
}
//Rest of the code
});
关于javascript - HTML 输入 - 删除前导字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47303026/