我有以下功能可以使用输入文本在选项的选项中进行搜索:
只要按下某个键,此功能就会进行搜索:
$( 'input#id_nit_del_cliente' ).keyup(function(e){
var nit = $('input#id_nit_del_cliente').val();
if(nit==='')
{
console.log("vacio:"+nit);
}
else {
console.log("nit:"+nit);
$("#id_cliente_idcliente option:starts-with("+nit+")").attr('selected', true);
var seleccionado=$("#id_cliente_idcliente option:selected").text();
console.log("elemento:"+seleccionado);
}
});
后来我想做一个比较,知道我在输入文本中写的内容是否与select中其中一个选项中包含的文本的一部分相同,我在"输入键& #34;或" tab键"按下了:
$( 'input#id_nit_del_cliente' ).keydown(function(e){
var keyCode = e.keyCode || e.which;
if (e.keyCode==9||e.keyCode==13) {
e.preventDefault();
var text=$("#id_cliente_idcliente option:selected").text().split(' ');
var nit = $('input#id_nit_del_cliente').val();
console.log("Nit del select:"+text[0]);
console.log("Nit del text:"+nit);
if(text[0]===nit)
{
$('input#id_codigo_producto').focus();
console.log("Solo nit:"+text[0]);
}
else {
alert('El cliente no existe');
$("#id_cliente_idcliente").selectmenu("refresh", true);
$('input#id_nit_del_cliente').val('');
$('input#id_nit_del_cliente').focus();
}
}
});
所有这些代码都有效,但当它进入" else"第二个函数,我手动清理输入文本,写其他东西,它工作,但在第三次它停止工作,这就是为什么我想重新加载选择文本,因为当我按下浏览器的刷新按钮,select仍然显示最后选择的值,但搜索再次起作用,但在两次意图之后它再次失败。我不能使用任何jquery插件,因为"选择"所有表单控件都是由DJango 1.8 ModelForm自动生成的。我尝试了selectmenu(" refresh",true)方法,但是控制台日志显示了这一点:
TypeError: $(...).selectmenu is not a function
这是HTML:
<label>Cliente: </label><input id="id_nit_del_cliente" maxlength="13" name="nit_del_cliente" type="text" />
<select id="id_cliente_idcliente" name="cliente_idcliente">
<option value="" selected="selected">---------</option>
<option value="1">123456-k - Nombre: Esteban José López Ambrosio</option>
<option value="2">4543243-5 - Nombre: Nombre1 Apellido1</option>
<option value="3">843453-5 - Nombre: Persona Prueba Probando Fecha</option>
</select>
<label for="id_codigo_producto">Código: </label><input id="id_codigo_producto" maxlength="25" name="codigo_producto" type="text" />
我也使用这段代码,我发现它在stackoverflow中的某处(这不重要,正在工作):
$.extend($.expr[":"], {
"starts-with": function(elem, i, data, set) {
var text = $.trim($(elem).text()),
term = data[3];
// first index is 0
return text.indexOf(term) === 0;
},
"ends-with": function(elem, i, data, set) {
var text = $.trim($(elem).text()),
term = data[3];
// last index is last possible
return text.lastIndexOf(term) === text.length - term.length;
}
});
答案 0 :(得分:0)
在您的javascript开头添加此内容
var selectDefault = $("#id_cliente_idcliente").html();
然后在你的else语句中删除此
$("#id_cliente_idcliente").selectmenu("refresh", true);
然后添加此
$("#id_cliente_idcliente").html(selectDefault);