在文本字段中将输入与定义的文本一起追加
Append input with defined text in textfield
我要做的是在用户输入期间在文本字段中附加.com
。文本字段将为空,.com
将在键入域名时显示。这是我不起作用的代码:
.HTML
Enter domain name: <input type="text" id="domain">
爪哇语
$(document).ready(function(){
$("input").keypress(function(){
$("#domain").val(this.value + ".com");
});
});
不工作演示:http://jsfiddle.net/UUzux/25/
提前谢谢。
我认为这是一个很好的问题。 对于时尚的解决方案,您可以使用以下代码,这些代码取自
在 html 文本框中设置键盘插入符号位置
要在输入字段中手动设置插入符号位置:
function setCaretPosition(elemId, caretPos) {
var el = document.getElementById(elemId);
el.value = el.value;
if (el !== null) {
if (el.createTextRange) {
var range = el.createTextRange();
range.move('character', caretPos);
range.select();
return true;
} else {
if (el.selectionStart || el.selectionStart === 0) {
el.focus();
el.setSelectionRange(caretPos, caretPos);
return true;
} else { // fail
el.focus();
return false;
}
}
}
}
然后,您将按如下方式实现它:
$("input").keyup(function () {
var val = $("#domain").val();
val = val.replace(/'..*/g, ''); // replace this with whatever regex you need to deny whatever input you want.
$("#domain").val(val + ".com");
var caretPos = val.length;
var elemId = "domain";
setCaretPosition(elemId, caretPos);
});
它将从字符串中取出任何.
字符之后的任何内容,每次都将其替换为".com"(您可以替换此正则表达式来处理所需的任何内容),然后将光标位置设置为".com"之前
JSFiddle Demo
此外,要在字符串中间启用编辑,您必须获得插入符号位置。 这里有一个堆栈溢出问题
获取文本输入字段中的光标位置(以字符为单位)
有很好的例子。 我修改了其中一个答案,如下所示:
getCaretPosition = function (elemId) {
var input = $('#' + elemId);
if (!input) return; // No (input) element found
if ('selectionStart' in input[0]) {
// Standard-compliant browsers
return input[0].selectionStart;
} else if (document.selection) {
// IE
input.focus();
var sel = document.selection.createRange();
var selLen = document.selection.createRange().text.length;
sel.moveStart('character', -input.value.length);
return sel.text.length - selLen;
}
}
然后你的jQuery看起来像这样:
$("input").keyup(function () {
var val = $("#domain").val();
var elemId = "domain";
var caretPos = getCaretPosition(elemId);
val = val.replace(/'..*/g, '');
$("#domain").val(val + (val ? ".com" : ""));
setCaretPosition(elemId, caretPos);
});
用该实现更新了小提琴。
也许这会对你有所帮助。http://jsfiddle.net/naeemshaikh27/UUzux/35/
$(document).ready(function(){
var prevText;
$("input").keyup(function(e){
var str=$("input").val().replace(".com", "");
str=str+'.com'
$("#domain").val( str );
});
});
好吧,这是更新的: http://jsfiddle.net/naeemshaikh27/UUzux/39/
但仍然看起来很敬畏,没有移动插入符号
你可以试试这个
$(document).ready(function () {
$("input").keyup(function (e) {
var kcode;
if (!e){
var e = window.event;
}
if (e.keyCode){
kcode = e.keyCode;
}
else if (e.which){
kcode = e.which;
}
if (kcode == 8 || kcode == 46){
return false;
}
this.value = this.value.replace('.com', '');
$("#domain").val(this.value + ".com");
var curpos = this.createTextRange();
curpos.collapse(true);
curpos.moveEnd('character', this.value.length - 4);
curpos.select();
});
});
我不得不在这篇文章中从 Joel 那里借用一些关于禁用退格键和删除键的代码。正如他在帖子中所说,小心使用e.keyCode
因为并非所有浏览器都使用它,有些浏览器使用 e.Which
.
JsFiddle 演示
更新:链接到密钥代码的完整列表。
相关文章:
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Highcharts工具提示不显示corrosconding文本值,而是显示'未定义'
- 在文本区域禁用javascript定义的keydown事件并恢复默认行为
- 不使用自定义CSS或HTML(使用框架方法)的角度材质文本输入或文本区域标签大小
- 如何在Paypal中自定义订单摘要上方的文本
- 将动态验证文本添加到自定义jQuery验证规则中
- 无法读取未定义的属性“替换” - 替换 JS 生成的 HTML 中的文本
- 文本编辑工具栏解决方案 (js),具有低级自定义
- 防止自定义文本出现在页面上的所有高图表上,←使用 {events:{load:function(){var.
- 将 d3 演示中的圆圈和文本替换为包含自定义 HTML 和 ko 绑定的 foreignObject
- 在文本区域显示未定义的javascript数组
- Highcharts自定义文本从右向左导出
- 文本框的值打印为“未定义”
- 谷歌可视化树图-如何创建自定义文本
- Javascript生成的文本框值=未定义
- 未捕获的ReferenceError:未定义文本
- 动态自定义文本堆栈标签Highcharts
- <tspan>文本</tspan>如果没有定义id或类,如何删除文本
- javascript脚本类型文本定义