防止文本框中第一个位置的空格

时间:2014-05-14 12:20:15

标签: jquery

当用户将第一个字符输入为空格时,我的代码工作正常,但如果用户插入字符串并返回到第一个位置,则需要占用空格。我如何阻止用户这样做? "#M1_7_othe"这是输入框的id。

$(function(){    
    var pp;    

    $("#M1_7_other").keydown(function(event) {
        pp =$("#M1_7_other").val();
        if( ($("#M1_7_other").val().length) == 0 ) {
            if( event.keyCode == 32 ) {
                return false;
            }
        }
    });
});

4 个答案:

答案 0 :(得分:4)

这不会阻止它,但会删除空格。使用trim()删除前面和后面的空格

var str = "       Hello World!        ";
alert(str.trim()); 

输出将是:

Hello World!

IE9,IE8:

看看这个主题:

.trim() in JavaScript not working in IE

答案 1 :(得分:1)

您可以使用oninput事件,它也将处理从上下文菜单粘贴的字符串:

$(function () {
    $("#M1_7_other").on('input', function (event) {
        var posCaret = this.selectionStart;
        this.value = this.value.replace(/^\s+/, '');
        setCaretPosition(this, posCaret);
    });
});

这是来自HERE

的setCaretPosition()方法
function setCaretPosition(elem, caretPos) {
    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

--DEMO--

答案 2 :(得分:1)

请试试这个,

    $(function(){    
    var pp;    

    $("#M1_7_other").keydown(function(event) {
        pp =$("#M1_7_other").val();          
            if( event.keyCode == 32 && document.getElementById("M1_7_other").selectionStart === 0) {

                return false;
            }
    });
});

答案 3 :(得分:0)

我的代码是动态的,适用于所有文本框,它适用于所有浏览器,包括Internet Explorer试试这个。

    $(function(){
    var pp;
    $("input:text").keydown(function(event){

    if(($(this).val().length)==0 && event.keyCode==32)
    {
    return false;
    }
   })
    .keyup(function(event)
   {
    pp = $(this).val();
    if(pp.charAt(0)==' ')
   {
   var pbb = $.trim(pp);
   $(this).val(pbb);
   }
    });
    });