jquery输入如果= x则删除第一个字母

时间:2012-07-03 16:53:09

标签: jquery regex

我正在尝试创建一个函数来删除输入框的第一个字符,如果它= 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>

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

感谢任何帮助。

5 个答案:

答案 0 :(得分:8)

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

$("#part").change(function(){
    this.value = this.value.replace(/^[Pp]/,'');
});​

答案 1 :(得分:3)

那是因为你正在选择子索引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>

答案 2 :(得分: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));
});

答案 3 :(得分: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);
}

答案 4 :(得分:0)

function fixP() {
    var elm = document.getElementById('part');
    elm.value = elm.value.toUpperCase().indexOf('P') === 0 ? elm.value.substring(1) : elm.value;
}

FIDDLE