事实上,这不仅仅是一个真正的价值,只是为了装饰目的,就像一个占位符一样。
我编写了这段代码,只有$符号它可以正常工作,但我无法修改它,例如,因为它可能像"来自$"或任何其他组合。
function priceInputPlaceholder(){
$( 'input' ).on('input', function() {
$( this ).val( function( index, val ) {
return (val[0] == "$" || !val) ? val : "$" + val;
});
});
}
priceInputPlaceholder();
如你所见,无论如何,它总是在价值之前保持美元符号。无论我点击多少次或在那里输入什么。
但是,如果我这样修改它:Codepen link
function priceInputPlaceholder(){
$( 'input' ).on('input', function() {
$( this ).val( function( index, val ) {
return (val[0] == "From$" || !val) ? val : "From$" + val;
});
});
}
priceInputPlaceholder();
它只是添加"来自$"在每个按键上。这对我来说真的不清楚。
我想也许问题出在val
数组中,我尝试了内部索引的不同组合,但它们没有用。
答案 0 :(得分:1)
问题是你要比较val [0] =="来自$",这将永远是假的。 val [0]只匹配第一个字符。
这是一个演示如何解决此问题的示例:
function priceInputPlaceholder(){
$( 'input' ).on('input', function() {
$( this ).val( function( index, val ) {
return ((val[0] == "F" &&
val[1] == "r" &&
val[2] == "o" &&
val[3] == "m" &&
val[4] == "$") || !val) ? val : "From$" + val;
});
});
}
priceInputPlaceholder();
答案 1 :(得分:1)
您需要测试值中是否存在From$
,因此请使用String.indexOf()来检查字符串是否存在
function priceInputPlaceholder() {
$('input').on('input', function() {
$(this).val(function(index, val) {
return (!val || val.indexOf("From$") > -1) ? val : "From$" + val;
});
});
}
priceInputPlaceholder();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" placeholder="From$" />