因为当我们输入 . 时,selectVal 的获取规则会改变,所以这里我们需要将 selectVal 获取方式区分开来,注意:这里我们要考虑到存在一个操作 -- 回删,输入 $,下拉框出来了,但是我
们又觉得此处 $ 出现得还不是时候(反正就是要删),删除 $,那么检索事件也就结束,初始化相关变量。当输入的是 . 时,如果要替换值,那么我们需要的获取从 . 在的位置往后找
到离 . 最近的 $ 符号,得到其在文本中的位置,这样我们才能重组 value
// 获取检索的值 selctVal
var getSelectVal = function(){
var val = _this.val();
if( searchStart == true && enterCharacter != opts.levelCharacter ){ // 当输入的是字符 triggerCharacter 的时候 默认为 $
selectVal = val.substring(oldCurrentPos,currentPos); // 检索值直接为获取的文本区域
}
if( searchStart == true && enterCharacter == opts.levelCharacter ){ // 当输入的是字符 levelCharacter 的时候 默认为 .
dotVal = val.slice(0,currentPos);
dotDollerPos = dotVal.lastIndexOf(opts.triggerCharacter)+1;
dotSelectVal = dotVal.substring(dotDollerPos,currentPos);
selectVal = dotSelectVal;
console.log("到当前下标的字符串为:"+dotVal);
console.log("到当前下标最近的$下标是:"+dotDollerPos);
console.log("输入 . 时检索值为:"+dotSelectVal);
}
console.log("获取的值区域为:"+oldCurrentPos+"-"+currentPos);
if( oldCurrentPos > currentPos ){ // 回删时清除选项li 隐藏下拉框
endSearch()
}
}
改变输入框 value 值,定位光标位置
因为我们这里存在两种选择方式,鼠标点击和按 enter 键,两者的区别只在于执行事件的方式,将同样的代码写两遍未免有点不美,这里我们将它摘出来
注意:此处需要区分触发检索事件的符号是 $ 还是 . ,因为符号不同,我们获取的值是不同的,光标定位也是不同
// 选中li当前项 改变输入框value值 定位光标
var changeValue = function(){
var val = _this.val();
var liTxt = _this.dropdown.find(".active").text();
var liTxtLength = liTxt.length;
var valLength = val.length;
// 此处需要区分触发检索事件的符号是
if( enterCharacter == opts.levelCharacter ){ // 如果是 .
var beforeSelectVal = val.substring(0,dotDollerPos);
}
else{ // 如果是 &
var beforeSelectVal = val.substring(0,oldCurrentPos);
}
var beforeSelectValLength = beforeSelectVal.length;
var afterSelectVal = val.substring(currentPos,valLength);
var pos = liTxtLength + beforeSelectValLength;
val = beforeSelectVal+liTxt+afterSelectVal;
_this.val(val);
setCarePosition(pos,pos); // 将光标定位在插入值后面
endSearch();
console.log("文本长度:"+beforeSelectVal.length);
console.log("li文本为:"+liTxt);
console.log("前部为:"+beforeSelectVal);
console.log("后部分为:"+afterSelectVal);
return false; // 此处必须加上return false 不然会调用callbacktips 初始化 dropdown
}
内容版权声明:除非注明,否则皆为本站原创文章。
