jQuery自动完成删除字符,如果什么都没有返回
我正在使用jQuery UI自动完成在表单中远程填充文本输入。我的信息都流畅,并且正常返回,但想要做一些事情来更好地提高UI而不是验证输入后填充。目前它正在被动态地写入PHP中,然后被用于前端。所以......jQuery自动完成删除字符,如果什么都没有返回
$js .= "$(function(){"; $js .= "$('#" . $config->settings['field_name'] . "_" . $suggestiveFieldArray . "').autocomplete({";
$js .= "source: function(request, response){";
$js .= "$.ajax({";
$js .= "url: '" . $thisURL . "',";
$js .= "dataType: 'jsonp',";
$js .= "data: {";
$js .= "term: request.term,";
$js .= "dependents: '". $thisVAR . "',";
$js .= "field: '". $config->settings['field_name'] . "_" . $suggestiveFieldArray . "',";
$js .= "fieldSettings: " . json_encode($fieldSettings);
$js .= "},";
$js .= "success: function(data) {";
$js .= "response(data);";
$js .= "},";
$js .= "minLength: 0";
$js .= "});";
$js .= "}";
$js .= "});";
$js .= "});";
是:
$(function(){ $('#" . $config->settings['field_name'] . "_" . $suggestiveFieldArray . "').autocomplete({
source: function(request, response){
$.ajax({
url: '" . $thisURL . "',
dataType: 'jsonp',
data: {
term: request.term,
dependents: '". $thisVAR . "',
field: '". $config->settings['field_name'] . "_" . $suggestiveFieldArray . "',
fieldSettings: " . json_encode($fieldSettings)
},
success: function(data) {
response(data);
},
minLength: 0";
});
}
});
});
在后端我(简称)返回以下:
array("id" => $row['name'] . '-' . $row['code'], "label" => $row['name'], "value" => $row['name']);
我想要做的事情是在输入字段的标签中触发隐藏的错误消息字段并删除刚刚触发的键,从而不允许他们输入无效数据并让他们知道原因。
我提供的返回数据已经在后端验证。所以如果没有提供任何建议,那么没有任何有效的输入。
我已经尝试过各种各样的事情来检查数据并使用jQuery UI API中的一些方法和事件玩,但到目前为止已经失败。
有没有一种方法来调用或一个事件赶上返回,我可以检查数据中的信息?如果是这样,我将如何去删除键控数据?
*编辑*
每@miknik请求......
当“E”输入到现场和有地点提供对的时候都没有用。
有效数据=(通过控制台XHR预览)
jQuery213038349144725773976_1512237603485([{id: "Eakly-OK", label: "Eakly", value: "Eakly"}, {id: "Edmond-OK", label: "Edmond", value: "Edmond"},…]); 0:{id: "Eakly-OK", label: "Eakly", value: "Eakly"}
1:{id: "Edmond-OK", label: "Edmond", value: "Edmond"}
2:{id: "El Reno-OK", label: "El Reno", value: "El Reno"}
3:{id: "Elk City-OK", label: "Elk City", value: "Elk City"}
4:{id: "Enid-OK", label: "Enid", value: "Enid"}
5:{id: "Eufaula-OK", label: "Eufaula", value: "Eufaula"}
无效数据:
jQuery2130021538268901126534_1512237746135([]); No properties
回答:
定义一个全局变量,最后输入抱到你的文本框,我会打电话给它goodText
。
将keydown事件处理程序绑定到文本框以设置变量的值或将其设置为您的ajax调用的成功函数的一部分。
修改你的成功的功能来检查数据的反应,并有如果基于响应数/ else条件返回
if (!data || !Object.keys(data).length)
如果其空,插入代码,以显示你想要的任何错误信息,然后您的文本框的值恢复到去年良好的价值:
$('#textInput').val(goodText);
否则,这样做时,他们得到了良好的反响不管你做什么,添加代码,如果您想更新这种方式来设置goodText
这里。
你可能会希望延迟自动完成,直到他们已经进入了几个字符
以上是 jQuery自动完成删除字符,如果什么都没有返回 的全部内容, 来源链接: utcz.com/qa/257513.html