我在编辑表单中有一个预先填充了值的文本字段。我想给它以下行为:
这是我的代码:
// HTML
<input type="text" class="clickToSelect" value="myText" />
// jQuery
$(".clickToSelect").click(function(){
$(this).select();
})
现在,当用户单击该字段时,将选中所有文本,但是当他们再次单击时,仍然会选中所有文本。有关如何在第二次单击时取消选择文本并放置光标的任何想法吗?
答案 0 :(得分:3)
这样的事情?
$(".clickToSelect").click(function(){
if(!$(this).hasClass("click-selectall")){
$(this).addClass("click-selectall");
$(this).select();
}
});
$(".clickToSelect").blur(function(){
$(this).removeClass("click-selectall");
})
答案 1 :(得分:2)
$(".clickToSelect").one('click', function(){
$(this).select();
})
更新:多次点击工作:
$(".clickToSelect").click(function(){
$this = $(this); // cache $(this) for better performance
if (!$this.data('selected'))
{
$this.data('selected', true);
$this.select();
}
}).blur(function(){
$this.data('selected', false);
});
答案 2 :(得分:1)
$.fn.slctText = function(start, end){
var field = $J(this);
if( field.createTextRange ){
var selRange = field.createTextRange();
selRange.collapse(true);
selRange.moveStart("character", start);
selRange.moveEnd("character", end);
selRange.select();
} else if( field.setSelectionRange ){
field.setSelectionRange(start, end);
} else {
if( field.selectionStart ){
field.selectionStart = start;
field.selectionEnd = end;
}
}
return $(this);
}
$.fn.setCurPos = function(pos){
$(this).slctText(pos,pos);
$(this).focus();
}
两者都是插件。使用它。