这是我的文本字段,我正在使用自动完成功能.
<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; });@H_502_4@一切正常,但我面临的问题是,当对textinput进行一些选择并尝试做退格时,它不会删除任何字符(我猜它的发出请求,所以它继续更新框) @H_502_4@能告诉我怎么解决这个问题吗? @H_502_4@这是我在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; } }
解决方法
也许你的脚本没有检测到退格.
@H_502_4@试试这个,
onkeydown="return nospecialCharacters(event)"@H_502_4@代替
onkeypress="return nospecialCharacters(event)"@H_502_4@按键事件(在其原始的IE形式中,在Safari / Chrome中)是关于添加到文本字段的实际字符.由于退格键不会向字段值添加新字符,因此不会导致按键事件. @H_502_4@在你的nospecialCharacters()函数中,添加keycode == 8以允许退格,
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; }