我正在尝试创建一个函数来删除输入框的第一个字符,如果它= 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>
这只会导致我不断删除输入中输入的任何内容。
感谢任何帮助。
答案 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)
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;
}