我有一个输入字段,应将输入的所有空格实时切换为“ _”。意味着当用户在该输入字段中单击空格键时,将显示下划线而不是空格。我对javascript / jquery还是很陌生,所以请不要将我的setTimeout-n00bidity判断为困难:
$( "#inputId" ).keydown(function (key){
var code = key.keyCode || key.which;
if( code == 32 ) { //Space key code
$( this ).val(
function( index, value ){
return value.substr( 0, value.length - 1 );
})
setTimeout(
function(){
$(this).val($(this).val() + "_");
}, 10
)
}
})
答案 0 :(得分:4)
您可以侦听input
事件,然后在侦听器中用下划线替换空格。这样,您就无需超时。
$("#inputId").on('input', function(key) {
var value = $(this).val();
$(this).val(value.replace(/ /g, '_'));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="inputId">
答案 1 :(得分:3)
没有jQuery,简单的解决方案:
var input = document.getElementById("inputId");
input.oninput = function (e) {
e.target.value = e.target.value.replace(' ', '_');
}
<input type="text" id="inputId" />
答案 2 :(得分:1)
使用keyup
事件而不是keydown
,只需用_
替换所有空格。根据用户键入的值修改值后,keyup
事件将运行,因此您无需检查charCode
。
$("#inputId").keyup(function() {
$(this).val(function(i, oldval) {
return oldval.replace(/ /g, '_');
});
});
答案 3 :(得分:0)
您可以使用更改键盘输入的值 例如:
<div>
<label>Test:</label>
<input type="text" id="test">
</div>
$("#test").on("keypress", function (e) {
if (32 == e.keyCode) {
e.preventDefault();
var newString = $("#test").val() + "_";
$("#test").val(newString);
}
});
答案 4 :(得分:0)
$( "#inputId" ).keyup(function (key){
var code = key.keyCode || key.which;
if( code == 32 ) { //Space key code
$(this).val($(this).val().replace(/ /g,"_"));
}
});