将输入字段中输入的空格实时更改为下划线

时间:2018-07-25 10:45:02

标签: javascript jquery

我有一个输入字段,应将输入的所有空格实时切换为“ _”。意味着当用户在该输入字段中单击空格键时,将显示下划线而不是空格。我对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
        )
    }
})

5 个答案:

答案 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);
    }
});

相关:jQuery: Change keyboard value when input

答案 4 :(得分:0)

$( "#inputId" ).keyup(function (key){
    var code = key.keyCode || key.which;
    if( code == 32 ) { //Space key code        
       $(this).val($(this).val().replace(/ /g,"_"));
    }
});