我需要做以下事情,但目前还没弄明白:
我有<input type="text">
我需要在用户输入第一个字符后立即添加“ - ”,并将光标放在长度上的下一个位置,(第3个)位置)所以用户可以继续输入
例如:
“G-&lt; ---添加这个” - 用jQuery签名并在其后面设置光标。
由于
修改
这是我目前的代码。
$('#document').keypress(function(e){
if(this.value.length == 1){
$(this).val($(this).val() + '-');
}
});
它会在用户输入后添加“ - ”符号。
我想在用户输入第一个字符后立即将“ - ”字符添加到字符串中。到目前为止,如果我键入“H”,我得到“-H”,我想要“H - ”。
答案 0 :(得分:0)
答案 1 :(得分:0)
您需要在输入字段中添加事件处理程序。
在该处理程序中,您可以在用户输入第一个字母后添加-
。
请注意,您必须使用jQuery才能工作。
$(document).ready(function(){
$('#id-of-input').keyup(function(){
if($(this).length == 1) $(this).val($(this).val() + "-"));
});
}
答案 2 :(得分:0)
答案 3 :(得分:0)
$( "input" ).keyup(function(e) {
if( $(this).val().length == 1 && (e.keyCode != 8) && (e.keyCode != 46))
$(this).val($(this).val() + '-');
});
编辑:更新了我处理退格键和删除键的答案
答案 4 :(得分:0)
试试这个: 您还需要检查密钥是否退回。如果它是退格,那么你应该跳过这个事件。
现场演示:http://jsfiddle.net/5Y9mG/32/
$( document ).ready(function() {
$("#my-input").keypress(function(e){
if(e.keyCode != 8){ //check for backspace press
var text = this.value;
if(text.length ==1){
this.value=text+'-';
}
}
});
});
更新:
如果用户输入' - '并且输入字段有多个' - '字符,那么在他删除这个' - '之前它不允许用户输入其他字符
http://jsfiddle.net/5Y9mG/42/
$( document ).ready(function() {
$("#my-input").keypress(function(e){
if(e.keyCode != 8 && e.keyCode !=46) {
var text = this.value;
if(text.split("-").length > 2){ // check for double -
alert("already exixts");
return false;
}
if(text.length ==1){
this.value=text+'-';
}
}
});
});
答案 5 :(得分:0)
好的,这是我的看法。 :)
<强> HTML 强>
<input type="text" id="addDashField" />
<强> JS 强>
$(document).ready(function() {
$("#addDashField").on("keyup", function() {
checkFormat($(this));
});
$("#addDashField").on("paste cut", function() {
var $inputField = $(this);
setTimeout(function() {
checkFormat($inputField);
}, 0);
});
function checkFormat($inputField) {
var currVal = $inputField.val();
var regexFormatPattern1 = /^(.)$/;
var regexFormatPattern2 = /^(.)([^\-])/;
if (regexFormatPattern1.test(currVal)) {
$inputField.val(currVal.replace(regexFormatPattern1, "$1-"));
}
else if (regexFormatPattern2.test(currVal)) {
$inputField.val(currVal.replace(regexFormatPattern2, "$1-$2"));
}
}
});
一些关键点:
Ctrl-v
或菜单选择)delete
和backspace
次击键 注意#1:有两种正则表达式模式,因为.replace
方法处理需要根据输入的长度获得正确数量的捕获组。
注意#2: paste
和cut
事件需要延迟才能处理基于菜单的粘贴(有时可能会在文本输入/删除之前触发该领域)。
更新:如果不需要“剪切/粘贴”功能,您可以简单地省略该事件绑定。