2

我正在尝试创建一个函数来删除输入框的第一个字符,如果它=P。我们使用条形码扫描仪,它使用前缀 P,在扫描零件编号时,我想即时将其剥离。

<input id="part" onKeyUp="fixP(this.value);"  size="20" type="text" name="part" style="text-transform: uppercase;"/>
<script>
function fixP() {
    $('#part').val($('#part').val().substr(1).replace(/P/,""));
}
</script>

这只会导致不断删除我在输入中键入的任何内容。

任何帮助表示赞赏。

4

5 回答 5

8

为什么不加入 on change 事件呢?http://jsfiddle.net/SKEwJ/2/

$("#part").change(function(){
    this.value = this.value.replace(/^[Pp]/,'');
});​
于 2012-07-03T16:56:21.647 回答
3

那是因为您正在选择 substr 索引 1。

试试这个:

<input id="part" onKeyUp="fixP(this.value);"  size="20" type="text" name="part" style="text-transform: uppercase;"/>
<script>
function fixP() {
    $('#part').val($('#part').val().replace(/^P/,""));
}
</script>
于 2012-07-03T16:54:51.110 回答
0
$("#part").change(function(){
    $(this).val($(this).val().substring(1));
});

如果子字符串中省略了第二个参数,它将采用字符串的其余部分,如下所述:http: //www.w3schools.com/jsref/jsref_substring.asp

如果您想稍后避免不必要的子字符串,您可以添加长度检查。

例如,结果总是 13 个字符长(开头没有“P”):

$("#part").change(function(){
    if($(this).val().length==14) $(this).val($(this).val().substring(1));
});
于 2012-07-03T17:02:38.210 回答
0

http://jsfiddle.net/DrWz6/1/

function fixP() {
    var value = $("#part").val();
    if(value.indexOf("p") == 0)
    {
        //alert("p");
        value = value.substring(1);
    }
    $("#part").val(value);
}
于 2012-07-03T17:06:04.207 回答
0
function fixP() {
    var elm = document.getElementById('part');
    elm.value = elm.value.toUpperCase().indexOf('P') === 0 ? elm.value.substring(1) : elm.value;
}

小提琴

于 2012-07-03T17:19:36.980 回答