View Code
//
地市名称长度
var length = 3 ;
$(document).ready( function (){
$( " #abc " ).keydown( function (obj){
var blResult = true ;
// 光标在文本框中的位置
var position = $( this ).position();
if (position < length)
{
if (obj.keyCode == 39 || obj.keyCode == 37 )
{
// 左右键可用
blResult = true ;
}
else
{
// 小于指定位值,不能进行任何操作
blResult = false ;
}
}
else if (position == length)
{
if (obj.keyCode == 8 )
{
// 屏蔽回格键
blResult = false ;
}
else if (obj.keyCode == 46 )
{
if (CheckIsSelPrefix())
{
// 选中不能删除(即回格键和delete键失效) ,任何操作都失效
blResult = false ;
}
else
{
blResult = true ;
}
}
else
{
if (CheckIsSelPrefix())
{
// 选中不能删除(即回格键和delete键失效) ,任何操作都失效
blResult = false ;
}
else
{
blResult = true ;
}
}
}
else if (position > length)
{
if (CheckIsSelPrefix())
{
// 选中不能删除(即回格键和delete键失效)
blResult = false ;
}
else
{
blResult = true ;
}
}
return blResult ;
});
// 禁用右键操作
$( " #abc " ).bind( " contextmenu " , function () {
var blResult = true ;
if (CheckIsSelPrefix())
{
// 选中了前缀,不能点击右键
blResult = false ;
}
else
{
// 没有选中,可以点击右键
blResult = true ;
}
return blResult;
});
// 过滤输入字符(用jquery过滤插件)
$( ' #abc ' ).keyfilter( function (c) {
var blResult = true ;
// 光标在文本框中的位置
var position = $( this ).position();
if (position < length)
{
// 在地市名称中间不能输入任何字符
blResult = false ;
}
else
{
blResult = true ;
}
return blResult ;
});
})
// 是否选择前缀
function CheckIsSelPrefix()
{
var blResult = false ;
// 选择的字符串
var strSel = getRangeById( " abc " );
if (strSel.length > 0 )
{
// 取得文本框里的内容
var txtContent = $( " #abc " ).val();
var s = txtContent.indexOf(strSel);
if (s < length)
{
// 选中
blResult = true ;
}
else
{
// 没有选中
blResult = false ;
}
}
else
{
// 没有选中
blResult = false ;
}
return blResult;
}
// 选择的字符串
function getRangeById(id)
{
var word = '' ;
if (document.selection)
{
o = document.selection.createRange();
if (o.text.length > 0 )
word = o.text;
}
else {
o = document.getElementById(id);
p1 = o.selectionStart;
p2 = o.selectionEnd;
if (p1 || p1 == ' 0 ' )
{
if (p1 != p2)
word = o.value.substring(p1,p2);
}
}
return word;
}
var length = 3 ;
$(document).ready( function (){
$( " #abc " ).keydown( function (obj){
var blResult = true ;
// 光标在文本框中的位置
var position = $( this ).position();
if (position < length)
{
if (obj.keyCode == 39 || obj.keyCode == 37 )
{
// 左右键可用
blResult = true ;
}
else
{
// 小于指定位值,不能进行任何操作
blResult = false ;
}
}
else if (position == length)
{
if (obj.keyCode == 8 )
{
// 屏蔽回格键
blResult = false ;
}
else if (obj.keyCode == 46 )
{
if (CheckIsSelPrefix())
{
// 选中不能删除(即回格键和delete键失效) ,任何操作都失效
blResult = false ;
}
else
{
blResult = true ;
}
}
else
{
if (CheckIsSelPrefix())
{
// 选中不能删除(即回格键和delete键失效) ,任何操作都失效
blResult = false ;
}
else
{
blResult = true ;
}
}
}
else if (position > length)
{
if (CheckIsSelPrefix())
{
// 选中不能删除(即回格键和delete键失效)
blResult = false ;
}
else
{
blResult = true ;
}
}
return blResult ;
});
// 禁用右键操作
$( " #abc " ).bind( " contextmenu " , function () {
var blResult = true ;
if (CheckIsSelPrefix())
{
// 选中了前缀,不能点击右键
blResult = false ;
}
else
{
// 没有选中,可以点击右键
blResult = true ;
}
return blResult;
});
// 过滤输入字符(用jquery过滤插件)
$( ' #abc ' ).keyfilter( function (c) {
var blResult = true ;
// 光标在文本框中的位置
var position = $( this ).position();
if (position < length)
{
// 在地市名称中间不能输入任何字符
blResult = false ;
}
else
{
blResult = true ;
}
return blResult ;
});
})
// 是否选择前缀
function CheckIsSelPrefix()
{
var blResult = false ;
// 选择的字符串
var strSel = getRangeById( " abc " );
if (strSel.length > 0 )
{
// 取得文本框里的内容
var txtContent = $( " #abc " ).val();
var s = txtContent.indexOf(strSel);
if (s < length)
{
// 选中
blResult = true ;
}
else
{
// 没有选中
blResult = false ;
}
}
else
{
// 没有选中
blResult = false ;
}
return blResult;
}
// 选择的字符串
function getRangeById(id)
{
var word = '' ;
if (document.selection)
{
o = document.selection.createRange();
if (o.text.length > 0 )
word = o.text;
}
else {
o = document.getElementById(id);
p1 = o.selectionStart;
p2 = o.selectionEnd;
if (p1 || p1 == ' 0 ' )
{
if (p1 != p2)
word = o.value.substring(p1,p2);
}
}
return word;
}
取得光标所有文本控件里位置的jquery代码
View Code
/*
*
* @author
*/
$.fn.extend({
position: function ( value ){
var elem = this [ 0 ];
if (elem && (elem.tagName == " TEXTAREA " || elem.type.toLowerCase() == " text " )) {
if ($.browser.msie){
var rng;
if (elem.tagName == " TEXTAREA " ){
rng = event.srcElement.createTextRange();
rng.moveToPoint(event.x,event.y);
} else {
rng = document.selection.createRange();
}
if ( value === undefined ){
rng.moveStart( " character " , - event.srcElement.value.length);
return rng.text.length;
} else if ( typeof value === " number " ){
var index = this .position();
index > value ? ( rng.moveEnd( " character " ,value - index)):(rng.moveStart( " character " ,value - index))
rng.select();
}
} else {
if ( value === undefined ){
return elem.selectionStart;
} else if ( typeof value === " number " ){
elem.selectionEnd = value;
elem.selectionStart = value;
}
}
} else {
if ( value === undefined )
return undefined;
}
}
})
* @author
*/
$.fn.extend({
position: function ( value ){
var elem = this [ 0 ];
if (elem && (elem.tagName == " TEXTAREA " || elem.type.toLowerCase() == " text " )) {
if ($.browser.msie){
var rng;
if (elem.tagName == " TEXTAREA " ){
rng = event.srcElement.createTextRange();
rng.moveToPoint(event.x,event.y);
} else {
rng = document.selection.createRange();
}
if ( value === undefined ){
rng.moveStart( " character " , - event.srcElement.value.length);
return rng.text.length;
} else if ( typeof value === " number " ){
var index = this .position();
index > value ? ( rng.moveEnd( " character " ,value - index)):(rng.moveStart( " character " ,value - index))
rng.select();
}
} else {
if ( value === undefined ){
return elem.selectionStart;
} else if ( typeof value === " number " ){
elem.selectionEnd = value;
elem.selectionStart = value;
}
}
} else {
if ( value === undefined )
return undefined;
}
}
})