我想实现以下的功能,如果html中的input标签中有如下的值时,当我的点击这个input中的某个字母时,和这个临近的字母被全选(遇到空格就不再选中),例如,我点击下面的这个input中的a时,它会把mail选中,而不会选中其他的字符,求大神如何设计js代码?
<input id="i" type="text" value="One two three">
$(document).ready(function(){
$("#i").on("click",function(){
var input = document.getElementById("i"),val = input.value;
var click_position = getPosition(input);
var start = val.lastIndexOf(" ",click_position);
if(start == -1) start = 0;
var end = val.indexOf(" ",click_position);
if(end == -1) end = val.length;
setSelection(input,start,end);
});
function setSelection(input, startPos, endPos) {
input.focus();
if (typeof input.selectionStart != "undefined") {
input.selectionStart = startPos;
input.selectionEnd = endPos;
} else if (document.selection && document.selection.createRange) {
input.select();
var range = document.selection.createRange();
range.collapse(true);
range.moveEnd("character", endPos);
range.moveStart("character", startPos);
range.select();
}
}
function getPosition (input) {
var pos = 0;
if (document.selection) {
input.focus ();
var selection = document.selection.createRange ();
selection.moveStart ('character', -input.value.length);
pos = selection.text.length;
}
else if (input.selectionStart || input.selectionStart == '0')
pos = input.selectionStart;
return pos;
}
})
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。