Javascript 在jquery中按顺序匹配正则表达式中的数字
所以最近,我一直在尝试实现keyup函数,以便在从数据库获取数据后进行搜索。我已经搜索了很多关于这个的问题,并设法找到了一个正则表达式来按顺序匹配数字 这给了我这个表达式Javascript 在jquery中按顺序匹配正则表达式中的数字,javascript,jquery,indexing,Javascript,Jquery,Indexing,所以最近,我一直在尝试实现keyup函数,以便在从数据库获取数据后进行搜索。我已经搜索了很多关于这个的问题,并设法找到了一个正则表达式来按顺序匹配数字 这给了我这个表达式“^[0-9]+$”。我还用regex表达式搜索了另一个关于实时搜索中jquery代码的问题 所以我试着改变正则表达式,使之与第一个问题中的表达式不同,以特定的顺序表示数字,但似乎不起作用 这是我的JSFIDLE代码,在我真正的代码中实现之前,我正试图使其工作,所以问题是我在哪一部分做得不对,以及如何使正则表达式只接受10
“^[0-9]+$”
。我还用regex表达式搜索了另一个关于实时搜索中jquery代码的问题
所以我试着改变正则表达式,使之与第一个问题中的表达式不同,以特定的顺序表示数字,但似乎不起作用
这是我的JSFIDLE代码,在我真正的代码中实现之前,我正试图使其工作,所以问题是我在哪一部分做得不对,以及如何使正则表达式只接受10个字符?提前谢谢
HTML
<input type="text" id="search" placeholder="Type to search">
<table id="table">
<tr>
<td>3123124</td>
<td>438785345</td>
</tr>
<tr>
<td>123131234</td>
<td>31234144</td>
</tr>
<tr>
<td>8909808</td>
<td>8709090980</td>
</tr>
</table>
这是输入和结果。结果将显示在表格中
$(".navbar-search").one('click', function(){
$.ajax({
url: "http://localhost:3000/api/queryAllRecord", // server url
type: "POST", //POST or GET
contentType: "application/json",
// data to send in ajax format or querystring format
dataType : "JSON", //dataType is you telling jQuery what kind of
response to expect
success: function(response) {
alert('success');
if(response){
var len = response.length;
var txt = "";
if(len > 0){
for(var i=0;i<len;i++){
if(response[i].samID && response[i].itemDescription){
txt += "<tr class='rowdata'>
<td>"+response[i].samID+"</td>"
+"<td>"+response[i].itemDescription+"</td>"
+"<td
class='editNumber'>"+response[i].issuedQTY +
"</td>"+"<td
class='editNumber'>"+response[i].openingQTY
+ "</td>" + "<td
class='editNumber'>"+response[i].closingQTY+"
</td>" +"<td
class='editNumber'>"+response[i].corruptedQTY+"
</td>" +"<td>"+response[i].Remarks+"</td>"+"
<td>"+response[i].ntaRequestRef+"</td>"
+"<td><input class='input button-edit'
type='submit' id='edit' value='Edit' onclick
= 'edit(this)' /></td>"
+"<td><input class='input button-edit'
type='button' id='delete' value='Delete'
onclick='deleteResult(this)' /></td>"+"</tr>";
}
}
$("#bResults").empty();
if(txt != ""){
$("#results").removeClass("hidden");
$("#bResults").append(txt);
}
}
}
},
error: function(response) {
alert('error');
}
});
event.preventDefault();
});
$(“.navbar搜索”).one('click',function(){
$.ajax({
url:“http://localhost:3000/api/queryAllRecord“,//服务器url
键入:“POST”、//POST或GET
contentType:“应用程序/json”,
//要以ajax格式或querystring格式发送的数据
dataType:“JSON”//dataType是告诉jQuery什么类型的
对预期的反应
成功:功能(响应){
警惕(“成功”);
如果(答复){
var len=响应长度;
var txt=“”;
如果(len>0){
对于(var i=0;i我对您的需求的理解是,您需要一个“以开头”的搜索。也就是说,当用户在搜索字段中键入某些内容时,您只希望显示具有一个或多个以输入值开头的单元格的表行
在这种情况下,您不想使用类似于^[0-9]+$
的正则表达式来测试字符串是否由数字组成,您需要匹配用户输入的值。您可以将该值转换为正则表达式,但如果stringToSearch.indexOf(searchString)的结果
为0这意味着在stringToSearch
的开头找到了searchString
(返回-1意味着找不到它,大于0意味着找到了它,但不在开头)
在您的函数中,text=$(this).val();
没有意义,因为.val()
用于表单字段值,而不是用于获取表行/单元格文本。您需要使用.text()
获取单个单元格的文本,但在行级别执行显示和隐藏操作。因此,可能需要这样做:
var$rows=$('#table tr');
var$cells=$rows.find('td');
$(“#搜索”).keyup(函数(){
var searchText=this.value;
$rows.hide();
$cells.filter(函数(){
返回$(this).text().indexOf(searchText)==0;
}).parent().show();
});
3123124
438785345
123131234
31234144
8909808
8709090980
您能在问题中包含输入和预期结果吗?@guest271314哦,您是指带有我的输入和结果的代码吗?您是指输入仅接受10个字符吗?使用maxlength=“10”
RegExp的预期输入和预期结果是什么?@guest271314您好,我已经更新了我的问题“您好,谢谢您的回答。这个
是什么意思?您是否愿意看一看我的代码,因为我似乎无法让它工作,尽管它在正常的表上工作得很好?”n通用术语,在函数中,this
指调用函数的对象。在大多数jQuery代码中,this
将指当前元素。因此,在keyep处理程序的第一行,this
是搜索输入元素。在.filter()中
函数该代码在每个TD元素中调用一次,此
引用当前TD。如果我显示的代码不适用于您的表,那可能是因为我忘记了允许Ajax加载您的表。请尝试在keyup事件处理程序中移动$rows和$cells声明和分配。非常感谢!I fo我接受了你的想法,它很有效!真的很有用。顺便问一下,我只是想知道是否可以只使用特定列而不是所有列进行搜索?
$(".navbar-search").one('click', function(){
$.ajax({
url: "http://localhost:3000/api/queryAllRecord", // server url
type: "POST", //POST or GET
contentType: "application/json",
// data to send in ajax format or querystring format
dataType : "JSON", //dataType is you telling jQuery what kind of
response to expect
success: function(response) {
alert('success');
if(response){
var len = response.length;
var txt = "";
if(len > 0){
for(var i=0;i<len;i++){
if(response[i].samID && response[i].itemDescription){
txt += "<tr class='rowdata'>
<td>"+response[i].samID+"</td>"
+"<td>"+response[i].itemDescription+"</td>"
+"<td
class='editNumber'>"+response[i].issuedQTY +
"</td>"+"<td
class='editNumber'>"+response[i].openingQTY
+ "</td>" + "<td
class='editNumber'>"+response[i].closingQTY+"
</td>" +"<td
class='editNumber'>"+response[i].corruptedQTY+"
</td>" +"<td>"+response[i].Remarks+"</td>"+"
<td>"+response[i].ntaRequestRef+"</td>"
+"<td><input class='input button-edit'
type='submit' id='edit' value='Edit' onclick
= 'edit(this)' /></td>"
+"<td><input class='input button-edit'
type='button' id='delete' value='Delete'
onclick='deleteResult(this)' /></td>"+"</tr>";
}
}
$("#bResults").empty();
if(txt != ""){
$("#results").removeClass("hidden");
$("#bResults").append(txt);
}
}
}
},
error: function(response) {
alert('error');
}
});
event.preventDefault();
});