道歉,如果这是一个简单的问题,相对较新的JavaScript / jQuery编码器。我想要做的是在输入字段(邮政编码条目)上进行验证,用户在空格键无法再次按下后按空格键。
我理解如何防止任何输入条目中的空格键,但在最多按一次后无法掌握如何操作。
编辑: @ cosmo0这是我开始尝试类似于@hamed但使用我在其他网站上看到的内容:
var spacePress = 0;
$('#StreamUrl').keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '32'){
nbr++;
}else if( nbr == 1){
event.keyCode
}
});
编辑:我相信我已经取得了积极成果
HTML
<input type="text" id="inputBox" class="input" autocomplete="off"/>
<p id="key"></p>
<p id="textField"></p>
的jQuery
var value;
var spaceCount = 0;
$( '.input' ).keydown(function(e){
var value = $( '.input' ).val();
if( e.keyCode == 32 ){
spaceCount ++;
console.log( 'Space count at ' + spaceCount );
}
if( e.keyCode == 32 && spaceCount > 1 ){
e.preventDefault();
}else if(value == ""){
spaceCount = 0;
}
$( '#key' ).text(spaceCount);
$( '#textField' ).text(value);
});
我认为这可以改进,因为当我最初清除输入字段时,spaceCount没有设置为0,直到我输入一个!= 32的keyCode。
感谢大家的帮助:)。
编辑2 感谢@Adjit,我想我找到了更好的解决方案。奇怪的是他的jQuery代码没有用,但JavaScript是(我要仔细检查代码,看看我是否有任何不一致)。但是我确实添加了额外的东西,这是为了防止用户输入空格,如果这是输入的第一个字符。
的JavaScript
document.getElementById('myInput').onkeydown = function(e) {
if(e.keyCode == 32 && this.value.indexOf(' ') >= 0) {
document.getElementById('key').innerHTML = "Already a space!";
e.preventDefault();
}else if( e.keyCode == 32 && this.value.length == 0 ){
e.preventDefault();
}
else{
document.getElementById('key').innerHTML = "";
}
}
答案 0 :(得分:1)
我认为最简单的方法是使用jquery keydown
这样的事件:
$(document).ready(function() {
var spaceCount = 0;
$("#inputId").keydown(function (e) {
//space code is 32
if (e.keyCode == 32)
spaceCount ++;
if(spaceCount == 2)
e.preventDefault();
else return true;
});
});
答案 1 :(得分:0)
找出一个更好的方法来做到这一点,没有任何计数器或任何东西 - 它可以用纯Javascript完成
<强> JQuery的强>
$('#myInput').on('keydown', function(e){
if(e.keyCode == 32 && $(this).val().indexOf(' ') >= 0){
$('#key').text('Already a space!');
return false;
}
});
Javascript等效
document.getElementById('myInput').onkeydown = function(e) {
if(e.keyCode == 32 && this.value.indexOf(' ') >= 0) {
document.getElementById('key').innerHTML = "Already a space!";
return false;
}
else document.getElementById('key').innerHTML = "";
}
<input id="myInput" />
<span id="key"></span>
答案 2 :(得分:0)
最后你只想在单词之间有一个空格而不是多个空格?为什么不等到用户尝试提交表单,然后删除所有额外的空格:
var string = string.replace(/\s{2,}/g, ' ');
string
是输入值。
修改强>
我删除了用于检测空格的on键事件,因为需要测试很多ifs和条件。
boolean
false
变量
.on('keypress'
检测到空格后...将布尔值设置为true。e.preventDefault()
以阻止其添加到输入中。