Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery中启用和禁用空白键_Javascript_Jquery - Fatal编程技术网

Javascript 在jQuery中启用和禁用空白键

Javascript 在jQuery中启用和禁用空白键,javascript,jquery,Javascript,Jquery,你好 我想启用/禁用空格键,这样字符串就不允许在字符串的开头和结尾按空格键,但应该接受在这两者之间按空格键 请参阅下面的字符串模式,这样X表示拒绝输入空白 XyyyyyX 在下面的代码中,我默认禁用了空白键,这样第一个字母就不会是空白字母 然后,只要我的第一个和最后一个字母不是空白字母,就启用空白键。 两个“else-if”执行都未能启用空白键 感谢您抽出时间回顾此问题,谢谢 $("#input").keydown(function (e) { if (e.keyCode == 32)

你好

我想启用/禁用空格键,这样字符串就不允许在字符串的开头和结尾按空格键,但应该接受在这两者之间按空格键

请参阅下面的字符串模式,这样X表示拒绝输入空白

XyyyyyX

在下面的代码中,我默认禁用了空白键,这样第一个字母就不会是空白字母

然后,只要我的第一个和最后一个字母不是空白字母,就启用空白键。 两个“else-if”执行都未能启用空白键

感谢您抽出时间回顾此问题,谢谢

$("#input").keydown(function (e) {
    if (e.keyCode == 32)
        return false;
    else if(this.value.charAt(0) != ' ')
        return true;
    else if(this.value.charAt(this.value.length - 1) != ' ')
        return true;
    });

您不需要使用自定义处理程序来防止输入空白,只需使用以下方法:

$('#getVal')。单击(函数(){
log($('#input').val());
console.log($('#input').val().trim());
})

如果您希望字符串周围没有任何空格,可以使用
trim
函数删除字符串开头和开头的空格。在这种情况下,不需要禁用空格键

例如

$("#input").keydown(function (e) {
    let string = $(this).val();
    string = string.trim(); // this will remove whitespace around the string
    // now process string however you want
})
keydown()。此外,您无法知道角色正在键入的位置;用户可能正在键入字符串的开头、中间或结尾。最后但并非最不重要的一点是,输入字段中的值还有其他更改方式,这些方式不涉及
keydown
keydup
事件

解决完全绕过Javascript(和jQuery)的问题的一种方法是使用:


您可以尝试以下代码:

$("#input").keydown(function (e) {
    var inputControl = document.getElementById('input');
    var startPos = inputControl.selectionStart;
    var endPos = inputControl.selectionEnd;
    var end = inputControl.value.length;

if (e.keyCode == 32 && (startPos==0 || startPos==end))
    return false;   
});

我认为应该从用户提供的字符串中删除空格,而不是禁用空格键。这只会创建一个没有任何前导或尾随空格的局部变量。如果要相应地更新输入字段,则需要添加:
$(this).val(string)
。禁用空白键不是一种良好的用户体验,如果用户想要编写类似“John Snow”的内容,禁用空白键将不允许用户这样做。不会有“中间空间”。因为在单词“john”之后,您将禁用空格键,用户将必须了解编写单词“snow”的过程。一些解释您在这里所做的工作将有所帮助。代码首先捕获控件和键盘光标的位置(使用inputControl.selectionStart)以及控件中字符串的长度。然后,如果按下空格键(e.keyCode==32)和光标位于字符串的最后一个位置(startPos==end)或控件中字符串的开头(startPos==0),则进行比较。如果为true,则不允许用户通过返回false键入任何内容。否则,它允许基于键盘键的正常键入。
$("#input").keyup(function (e) {
    e.target.value = e.target.value.trim()
});
$("#input").keydown(function (e) {
    var inputControl = document.getElementById('input');
    var startPos = inputControl.selectionStart;
    var endPos = inputControl.selectionEnd;
    var end = inputControl.value.length;

if (e.keyCode == 32 && (startPos==0 || startPos==end))
    return false;   
});