Paw*_*wan 8 jquery jquery-autocomplete
这是我的文本字段,我正在使用自动完成功能.
<input type="text" name="state" id="state" placeholder="State" maxlength="25" required onkeypress="return nospecialCharacters(event)"/>
$("#state").autocomplete({
source: function(request, response) {
var statevalue = $.trim($("#state").val());
if (statevalue) {
$.ajax({
url: url + 'eee',
dataType: 'jsonp',
jsonp: false,
timeout: 6000,
jsonpCallback: 'jsonCallback',
delay: 100,
success: function(data) {
$("#state").empty();
response(data);
}
});
}
},
minLength: 2,
appendTo: "#state_result",
select: function (event, ui) {
$("#state").val(ui.item.label);
$("#city").focus();
return false;
},
close: function(event, ui)
$(this).data().term = null;
});
Run Code Online (Sandbox Code Playgroud)
一切正常,但我面临的问题是,当对textinput进行一些选择并尝试做退格时,它不会删除任何字符(我猜它的发出请求,所以它继续更新框)
能告诉我怎么解决这个问题吗?
这是我在keypress上调用的函数
function nospecialCharacters(thi, dec)
{
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
if (((keycode >= 65) && (keycode <= 90)) || ((keycode >= 48) && (keycode <= 57)) || ((keycode >= 97) && (keycode <= 122)) || keycode == 32 || keycode == 45 || keycode == 47 || keycode == 92)
{
return true;
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
也许你的脚本没有检测到backspace.
试试这个,
onkeydown="return nospecialCharacters(event)"
Run Code Online (Sandbox Code Playgroud)
代替
onkeypress="return nospecialCharacters(event)"
Run Code Online (Sandbox Code Playgroud)
该keypress事件是(原文IE的形式,和在Safari /铬)大约的实际字符被添加到文本域.由于backspace键不会向字段值添加新字符,因此不会导致任何keypress事件.
在你的nospecialCharacters()函数内部,添加keycode == 8允许backspace,
if (((keycode >= 65) && (keycode <= 90)) || ((keycode >= 48) && (keycode <= 57)) || ((keycode >= 97) && (keycode <= 122)) || keycode == 32 || keycode == 45 || keycode == 47 || keycode == 92 || keycode == 8)
{
return true;
}
else
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
添加退格键(8)的密钥代码,如果需要,我建议添加tab(9)和其他键,如箭头,页面向上,向下翻页,主页,结束等.
var keyCodeArray = [92, 8, 9]; //keycode 8-backspace, 9-tab, delete-46
for(i = 32; i <= 40; i++) keyCodeArray.push(i); //arrows, pageup, pagedown, home, end
for(i = 45; i <= 57; i++) keyCodeArray.push(i);
for(i = 65; i <= 90; i++) keyCodeArray.push(i);
for(i = 97; i <= 122; i++) keyCodeArray.push(i);
function nospecialCharacters(thi, dec) {
if(window.event) keycode = window.event.keyCode;
else if(e) keycode = e.which;
else return true;
console.log(keycode);
return $.inArray(keycode, keyCodeArray) != -1 ? true : false;
}
Run Code Online (Sandbox Code Playgroud)