Javascript 以交互方式,don';t不允许文本输入中的第一个字符是空格或一组空格
首先,这不是一个重复的问题。我遇到的大多数类似问题都不会以交互方式执行所需的操作(例如“onkeydown”、“onkeydup”等)。我需要一个纯JavaScript(即,无jQuery)函数来禁止基于文本的输入的第一个字符是一个空格或一组空格,只要给定元素ID即可。我有:Javascript 以交互方式,don';t不允许文本输入中的第一个字符是空格或一组空格,javascript,Javascript,首先,这不是一个重复的问题。我遇到的大多数类似问题都不会以交互方式执行所需的操作(例如“onkeydown”、“onkeydup”等)。我需要一个纯JavaScript(即,无jQuery)函数来禁止基于文本的输入的第一个字符是一个空格或一组空格,只要给定元素ID即可。我有: <script type="text/javascript"> /* Don't allow the first character of a "text-based" input element * (e
<script type="text/javascript">
/* Don't allow the first character of a "text-based" input element
* (e.g. text-box, text-area, editable-div's) to be a space, given
* the elements ID ([ eID ]). [BEGIN]
*/
function noPrecedingSpace ( eID )
{
var elmt = document.getElementById(eID);
elmt.addEventListener("keydown", function(event)
{
var strg = elmt.value;
var lastChar = strg.charAt(strg.length - 1);
if ((lastChar == " ")||(lastChar == " ")||(strg == ""))
{
return event.which !== 32;
};
});
};
/* Don't allow the first character of a "text-based" input element
* (e.g. text-box, text-area, editable-div's) to be a space, given the
* elements ID ([ eID ]). [END]
*/
</script>
/*不允许“基于文本”输入元素的第一个字符
*(例如,文本框、文本区域、可编辑分区)为给定的空格
*元素ID([eID])。[开始]
*/
函数NoReceidingSpace(eID)
{
var elmt=document.getElementById(eID);
elmt.addEventListener(“键控”,函数(事件)
{
var strg=elmt.值;
var lastChar=strg.charAt(strg.length-1);
如果((lastChar==“”)| |(lastChar==“”)| |(strg==“”)
{
return event.which!==32;
};
});
};
/*不允许“基于文本”输入元素的第一个字符
*(例如,文本框、文本区域、可编辑分区)是一个空间,给定
*元素ID([eID])。[完]
*/
你知道为什么这不起作用吗
我做错了什么
请注意:“粘贴”已经被另一个javascript考虑在内,并且在该字段中被禁止,顺便说一句,它工作得很好
您可以使用正则表达式测试输入的值,查看它是否以空格开头,如果是,则从值的开头删除空格
var input = document.getElementById('noSpaces');
input.addEventListener('keyup', function(event) {
if(/^\s/.test(input.value)) {
input.value = input.value.replace(/^\s+/,'');
}
});
您可以使用正则表达式测试输入的值,查看它是否以空格开头,如果是,则从值的开头删除空格
var input = document.getElementById('noSpaces');
input.addEventListener('keyup', function(event) {
if(/^\s/.test(input.value)) {
input.value = input.value.replace(/^\s+/,'');
}
});
返回真/假是管理事件传播的“老”方法。现在最好使用
preventDefault()
这只是检查。。。如果当前输入长度为零,则不允许有空格
另请参阅
如果这确实是一个问题,您还可以添加/修改以检查不间断空格——与Dave的答案一样匹配正则表达式,但前提是elmt.value.length
为>0
但是,这将允许您键入非空格,然后备份到字段开头并插入空格。当你打字时,一个空格会修剪前导空格,但这也不能完全解决问题
var elmt = document.getElementById('noSpaces');
elmt.addEventListener('keydown', function (event) {
if (event.which === 32) {
elmt.value = elmt.value.replace(/^\s+/, '');
if (elmt.value.length === 0) {
event.preventDefault();
}
}
});
即使考虑到当前插入符号的位置和当前选定的文本,您也可以不断优化它,但最终您必须在服务器上接收到的字符串
.trim()
,因为我(作为一个人)可以向您发送任何我想发送的内容,尽管您竭尽全力让我输入“合法”的javascript字符串。返回true/false是管理事件传播的“老”方法。现在最好使用preventDefault()
这只是检查。。。如果当前输入长度为零,则不允许有空格
另请参阅
如果这确实是一个问题,您还可以添加/修改以检查不间断空格——与Dave的答案一样匹配正则表达式,但前提是elmt.value.length
为>0
但是,这将允许您键入非空格,然后备份到字段开头并插入空格。当你打字时,一个空格会修剪前导空格,但这也不能完全解决问题
var elmt = document.getElementById('noSpaces');
elmt.addEventListener('keydown', function (event) {
if (event.which === 32) {
elmt.value = elmt.value.replace(/^\s+/, '');
if (elmt.value.length === 0) {
event.preventDefault();
}
}
});
即使考虑到当前插入符号的位置和当前选定的文本,您也可以不断优化它,但最终您必须在服务器上接收到的字符串
.trim()
,因为我(作为一个人)可以向您发送任何我想发送的内容,尽管您竭尽全力让我输入“合法”的javascript字符串。多亏@StephenP,我得出了这个最终答案,它正好满足了我的需要(“访问者姓名”字段):
/*给定元素ID([eID]),不允许“基于文本”输入元素(例如文本框、文本区域、可编辑div等)的第一个字符为空格。另外,相邻单词之间的空格不能超过一个。[开始]*/
/*用法示例:NoReceidingOrdoubleSpace(“访问者名称”)*/
函数NoReceidingOrdoubleSpace(eID)
{
var elmt=document.getElementById(eID);
elmt.addEventListener(“键控”,函数(事件)
{
var strg=elmt.值;
var lastChar=strg.charAt(strg.length-1);
如果((lastChar==“”)| |(lastChar==“”)| |(strg==“”)
{
if(event.which==32)
{
event.preventDefault();
};
};
});
};
/*给定元素ID([eID]),不允许“基于文本”输入元素(例如文本框、文本区域、可编辑div等)的第一个字符为空格。另外,相邻单词之间的空格不能超过一个。[完]*/
请记住,如果您不需要空间,只需要在输入的开头,@StephenP的答案可能更实用,并且是这个问题的真正答案,给出了标题
还请记住,正如@StephenP所提到的,真正的验证最好在服务器端脚本(例如php)中完成。这个JavaScript只是为了鼓励正确的输入格式。不多不少
对@StephenP的巨大赞誉
谢谢
.多亏了@StephenP,我才得出了这个最终答案,它正好满足了我的需求(“访问者姓名”字段):
/*给定元素ID([eID]),不允许“基于文本”输入元素(例如文本框、文本区域、可编辑div等)的第一个字符为空格。另外,相邻单词之间的空格不能超过一个。[开始]*/
/*用法示例:NoReceidingOrdoubleSpace(“访问者名称”)*/
函数NoReceidingOrdoubleSpace(eID)
{
var elmt=document.getElementById(eID);
elmt.addEventListener(“键控”,函数(事件)
{
var strg=elmt.值;
var lastChar=strg.charAt(strg.length-1);
如果((lastChar==“”)| |(lastChar==“”)| |(strg==“”)
{
if(event.which==32)
{
event.preventDefault();
};
};
});
};
/*不要