搜索脚本不查找单个单词
Search script doesn't look for individual words
我使用下面的脚本为我的HTML网站搜索。
我遇到的问题是,当我希望它在整个XML中独立搜索单词时,它将单词作为一个短语一起搜索。例如,如果有人输入"数字制作人",它会搜索"数字制作人",而不是分别搜索"数字"answers"制作人"。
任何帮助得到这个工作将非常感激!
$(document).ready(function(){
//GLOBAL VAR
var XMLSource = $('#data').attr('xmlData');
var keyword = '';
var catType = '';
var pub = '';
var i = 0;
$("#searchButton").click(function() {
keyword = $("input#term").val();
catType = $("#category option:selected").val();
//Reset any message
var errMsg = '';
pub = '';
if ( keyword == '' ) { errMsg += 'Please Enter Search Term' + ''n'; }
else if ( catType == 'none' ) { errMsg += 'Please Select Category' + ''n'; }
else { searchThis(); }
if ( errMsg != '' ) {
pub += '<div class="error">' + ''n';
pub += errMsg;
pub += '</div>' + ''n';
}
//Show error
$('#result').html( pub );
});
function searchThis() {
$.ajax({
type: "GET",
url: XMLSource,
dataType: "xml",
success: function(xml) { loadPublication (xml) }
});
}
function loadPublication (xmlData) {
i = 0;
var row;
var searchExp = "";
$(xmlData).find('Job').each(function(){
var SearchTitle = $(this).find('SearchTitle').text();
var Description = $(this).find('Description').text();
var EmailTo = $(this).find('EmailTo').text();
//Format the keyword expression
var exp = new RegExp(keyword,"gi");
//Check if there is a category selected;
//if not, use EmailTo column as a default search
if ( catType == 'SearchTitle' ) { searchExp = SearchTitle.match(exp); }
else if ( catType == 'Description' ) { searchExp = Description.match(exp); }
else if ( catType == 'EmailTo' ) { searchExp = EmailTo.match(exp); }
if ( searchExp != null ) {
//Start building the result
if ((i % 2) == 0) { row = 'even'; }
else { row = 'odd'; }
i++;
pub += '<tr class="row ' + row + '">' + ''n';
pub += '<td valign="top" class="col1">' + SearchTitle + '</td>' + ''n';
pub += '<td valign="top" class="col2">' + Description + '</td>' + ''n';
pub += '<td valign="top" class="col3">' + EmailTo + '</td>' + ''n';
pub += '</tr>' + ''n';
}
});
if ( i == 0 ) {
pub += '<div class="error">' + ''n';
pub += 'No Result Found' + ''n';
pub += '</div>' + ''n';
//Populate the result
$('#result').html( pub );
}
else {
//Pass the result set
showResult ( pub );
}
}
function showResult (resultSet) {
//Show the result
pub = '<table id="grid" border="0">' + ''n';
pub += '<thead><tr>' + ''n';
pub += '<th class="col1">Job Title</th>' + ''n';
pub += '<th class="col2">Job Description</th>' + ''n';
pub += '<th class="col3">Apply To</th>' + ''n';
pub += '</tr></thead>' + ''n';
pub += '<tbody>' + ''n';
pub += resultSet;
pub += '</tbody>' + ''n';
pub += '</table>' + ''n';
//Populate
$('#result').html(pub)
$('#grid').tablesorter();
}
});
由于您正在使用正则表达式,您可以做的是将原始搜索字符串中的所有空格替换为OR操作符|
(<-这是一个管道[shift + '],以防难以分辨)。您可以在var exp = new RegExp(keyword,"gi");
keyword = keyword.replace(" ", "|");
行让我知道这是否适合你,如果它是有意义的:)
参考:
JavaScript替换- http://www.w3schools.com/jsref/jsref_replace.asp
RegExp操作符- http://introcs.cs.princeton.edu/java/72regular/
相关文章:
- 是否可以禁用jquery中的单个单选按钮
- 单个页面上有多个标记表单
- 如何使用单个表单填写多个表单
- 如何从单选按钮中获取多个值,然后将它们分配到单个变量中并在页面上显示
- 如何查找离单击位置最近的子项
- jQuery:如何查找id是动态生成的单选按钮是否被选中
- 多个表单触发到单个工作表
- 什么 在单个页面上创建具有 php 多步骤的多个表单
- Angularjs元素在一个调用中同时查找select和input-这是单个标记查找的极限
- 触发单个单击事件时触发的所有单击事件处理程序
- javascript禁用单个单选按钮
- 如何在单击按钮后再次动态单击按钮(将单个单击视为双击)
- 在页面加载时保持单个单选按钮未选中
- 我如何更改父表单查找值
- 使用单个函数查找两个日期之间的差值
- 谷歌表单:查找和替换不同的文本值
- 如何在 reactjs 中设置单个单击事件的状态和 props
- 当将单个单击事件绑定到多个按钮时,我如何使被单击的按钮做一件事而所有其他按钮做另一件事?
- 如何使用jquery/java脚本检查单个单选按钮
- 我可以在单个单击事件上触发多个函数吗?