我对 jQuery 中的 .val() 方法如何处理空格(如果它根本是 jQuery 问题)感到困惑。
我的示例是使用我正在慢慢开发的 AJAX 建议框功能。它使用 Codeigniter 作为框架。
我有这个 jQuery 代码:
$(document).ready(function(){
$("#suggestbox").hide();
$("#searchboxinput").live("keyup", function(){
if ($("#searchboxinput").val().length==0){
$("#suggestbox").fadeOut(100);
}else{
$("#suggestbox").fadeIn(100);
$("#sugresultcontain").load('http://localhost/ajaxtest/ajaxhandle/suggest/'+$("#searchboxinput").val()+' #loadsuggest');
};
});
});
'#suggestboxinput' 是一个文本输入,如下所示:
<div id="content" class="clear">
<div id="searchwrap" class="clear">
<div id="searchbox" class="float-left"><input id="searchboxinput" name="" value="" type="text"></div>
<div id="searchbutton" class="float-right"><input id="searchbuttoninput" name="" type="button" value="Go"></div>
</div>
<div id="suggestbox" class="clear">
<div id="suggesthead">Suggestions:</div>
<div id="sugresultcontain"></div>
</div>
</div>
然后我有(使用代码点火器)一个处理 .load() 的方法,如图所示:
public function suggest($q=''){
$suggest = $this->ajax_handle->suggest();
for($i=0; $i<count($suggest); $i++){
$db[$i] = $suggest[$i]['firstname'].' '.$suggest[$i]['lastname'];
}
if(strlen($q)>0){
$sugstr = '';
$e = 0;
for($f=0; $f<count($db); $f++){
if (strtolower($q)==strtolower(substr($db[$f],0,strlen($q)))){
$sugresult[$e] = $db[$f];
$e++;
}
}
if(isset($sugresult)){
$data['sugresult'] = $sugresult;
$this->load->view('ajaxref/suggest', $data);
}else{
$this->load->view('ajaxref/suggest');
}
}else{
$this->load->view('ajaxref/suggest');
}
}
这几乎可以按预期工作,如果我加载页面然后使用数据库中的名称显示的文本输入(根据文本字段)。如果我输入名字,它会正常工作,并且无论我在字段后放置多少空格都会继续显示(这是完美的)。
然而,问题在于即使只在一个空格(Dominic Sore)或什至只在第一个字母或姓氏(Dominic S)之后输入姓氏。建议框中不显示名称。
我读过在输入框中使用“+”符号会起作用。我对其进行了测试,它确实有效(Dominic+Sore 在建议框中输出 Dominic Sore)。不过可以理解的是,我不能让用户为他们想要使用的每个空间都输入一个“+”。
所以我只是想知道我该如何处理?我已经阅读了很多,但我找不到解决方案。
谢谢。