据我所知,使用javascript,您可以使用以下代码(在jQuery中)选择文本框的内容:
$("#txt1").select();
有没有办法做相反的事情?要取消选择文本框的内容?我有一系列文本框的焦点事件,用于选择其中的内容。现在有时候我想要关注特定的文本框而不选择它。我打算做的是为这个特定的文本框调用焦点事件,然后通过调用取消选择它。
$("input[type=text]").focus(function() {
$(this).select();
});
//code....
$("#txt1").focus();
//some code here to deselect the contents of this textbox
有什么想法吗?
谢谢!
答案 0 :(得分:18)
怎么样:
$("input").focus(function(){
this.selectionStart = this.selectionEnd = -1;
});
答案 1 :(得分:8)
如果您只是将文本框的值分配给自己,则应取消选择文本。
答案 2 :(得分:3)
您需要设置selectionStart
和selectionEnd
属性。但由于某种原因,在焦点事件上设置这些不起作用(我不知道为什么)。要使其工作,请在一小段时间后设置属性。
$(document).ready(function(){
$('#txt1').focus(function(){
setTimeout(function(){
// set selection start, end to 0
$('#txt1').attr('selectionStart',0);
$('#txt1').attr('selectionEnd',0);
},50); // call the function after 50ms
});
});
答案 3 :(得分:1)
“在不选择的情况下聚焦特定文本框”: 我会使用patched jquery plugin jquery-fieldselection
的部分使用它你可以打电话
$('#my_text_input').setSelection({"start":0, "end":0}); // leaves the cursor at the left
或使用此缩小版本将光标放在文本的末尾(默认情况下)
(function() {
var fieldSelection = {
setSelection: function() {
var e = (this.jquery) ? this[0] : this, len = this.val().length || ;
var args = arguments[0] || {"start":len, "end":len};
/* mozilla / dom 3.0 */
if ('selectionStart' in e) {
if (args.start != undefined) {
e.selectionStart = args.start;
}
if (args.end != undefined) {
e.selectionEnd = args.end;
}
e.focus();
}
/* exploder */
else if (document.selection) {
e.focus();
var range = document.selection.createRange();
if (args.start != undefined) {
range.moveStart('character', args.start);
range.collapse();
}
if (args.end != undefined) {
range.moveEnd('character', args.end);
}
range.select();
}
return this;
}
};
jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });
})();
以这种方式使用:
$('#my_text_input').setSelection(); // leaves the cursor at the right
答案 4 :(得分:0)
为什么不在dom元素上暂时存储一个布尔值,而不是选择然后取消选择?
$("input[type=text]").focus(function() {
if($(this).skipFocus) return;
$(this).select();
});
//code....
$("#txt1").skipFocus = true;
$("#txt1").focus();
答案 5 :(得分:0)
我想提出一个简单的解决方案
$("input[type=text]").focus(function() {
$(this).select();
});
$("input[type=text]").blur(function() {
$('input[type="hidden"][value=""]').select();
});
//code....
$("#txt1").focus();
答案 6 :(得分:0)
这是一个没有jquery的简单解决方案
<input type="text" onblur="this.selectionStart = this.selectionEnd = -1;">
答案 7 :(得分:-1)
如果要使用jQuery取消选择文本框,请执行以下操作:
$(your_input_selector).attr('disabled', 'disabled');
$(your_input_selector).removeAttr('disabled');