Javascript 取消选择jQuery中的文本框
我有一个jQuery搜索脚本,它查询PHP文件,然后将结果解析为HTML div。当没有查询处于活动状态时,文本框会自动选择,但当查询处于活动状态时,我希望不会自动选择它。目前我只能禁用文本框,这不是我想要的。我如何解决这个问题 我的jQuery脚本是:Javascript 取消选择jQuery中的文本框,javascript,jquery,html,Javascript,Jquery,Html,我有一个jQuery搜索脚本,它查询PHP文件,然后将结果解析为HTML div。当没有查询处于活动状态时,文本框会自动选择,但当查询处于活动状态时,我希望不会自动选择它。目前我只能禁用文本框,这不是我想要的。我如何解决这个问题 我的jQuery脚本是: $(document).ready(function(){ $('[id^=type_]').click(function(){ type=this.id.replace('type_',''); $('
$(document).ready(function(){
$('[id^=type_]').click(function(){
type=this.id.replace('type_','');
$('[id^=type_]').removeClass('selected');
$('#type_'+type).addClass('selected');
return false;
});
$('#type_search').click();
$('#query').keyup(function(){
var query=$(this).val();
var url='/'+type+'/'+query+'/';
window.location.hash=''+type+'/'+query+'/';
document.title=$(this).val()+' - My Search';
$('#results').show();
if(query==''){
window.location.hash='';
document.title='My Search';
$('#results').hide();
}
$.ajax({
type:'GET',
url:url,
dataType:'html',
beforeSend:function(){
$('#query').prop('disabled',true);
},
success:function(results){
$('#results').html(results);
}
});
});
if(window.location.hash.indexOf('#'+type+'/')==0){
query=window.location.hash.replace('#'+type+'/','').replace('/','');
$('#query').val(decodeURIComponent(query)).keyup();
}
$('#query').focus();
});
您可以使用$'query'.blur删除焦点
更新:
如果您希望发送ajax请求,而文本框仅在您认为用户已暂停键入时才失去焦点,则可以启动keyup事件的续订超时,并仅在触发ajax请求时发送该请求。这样,您可以更安全地模糊文本框:
var queryPauseTimeout;
.
.
.
.
$('#query').keyup(function(){
if (queryPauseTimeout)
clearTimeout(queryPauseTimeout);
queryPauseTimeout = setTimeout(function() {
var query=$('#query').val();
var url='/'+type+'/'+query+'/';
window.location.hash=''+type+'/'+query+'/';
document.title=$('#query').val()+' - My Search';
$('#results').show();
if(query==''){
window.location.hash='';
document.title='My Search';
$('#results').hide();
}
$.ajax({
type:'GET',
url:url,
dataType:'html',
beforeSend:function(){
$('#query').prop('disabled',true);
},
success:function(results){
$('#results').html(results);
}
});
,5000);
。
.
.
.这是我刚才评论的“答案”版本。如果使用$'query'.val.length,则可以在文本框中获取值的长度,如下所示:
var textlength = $('#query').val().length;
if(textlength <= 0)
$('#query').focus();
else
$('#query').blur();
我不认为。模糊;确实需要,但也不会有什么坏处
编辑1:好的,我假设您有一个页面,其中有一个搜索框和一个div标记,您的项目存储在其中,这是由AJaX实现的。我还假设,当您点击F5从而重新加载整个页面时,您的页面将重新加载,并且搜索框中已经有PHP或早期JavaScript语句的数据。然后可以替换当前的$'query'。focus;,用我上面贴的代码
编辑2:我刚刚重新阅读了你的代码,我想替换$'query'。focus;使用我的代码应该可以完全按照您的要求完成操作。您不能删除$'query'。focus;并将自动对焦添加到字段?我不确定您想要什么,但如果您重新加载页面并将数据加载到查询文本框中,是否可以使用$'query'.val检查其长度,如果为空,是否进行对焦?请参阅我发布的答案,如果您有更多问题,我将更新该答案。这取决于您希望何时取消选择文本框?页面加载意味着整个页面加载,或者当出现AJaX请求/结果时?我更新了我的答案,请仔细阅读,看看它是否适合您的需要。我已经更新了我的答案,以更好地适应这种情况