Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery中按顺序匹配正则表达式中的数字_Javascript_Jquery_Indexing - Fatal编程技术网

Javascript 在jquery中按顺序匹配正则表达式中的数字

Javascript 在jquery中按顺序匹配正则表达式中的数字,javascript,jquery,indexing,Javascript,Jquery,Indexing,所以最近,我一直在尝试实现keyup函数,以便在从数据库获取数据后进行搜索。我已经搜索了很多关于这个的问题,并设法找到了一个正则表达式来按顺序匹配数字 这给了我这个表达式“^[0-9]+$”。我还用regex表达式搜索了另一个关于实时搜索中jquery代码的问题 所以我试着改变正则表达式,使之与第一个问题中的表达式不同,以特定的顺序表示数字,但似乎不起作用 这是我的JSFIDLE代码,在我真正的代码中实现之前,我正试图使其工作,所以问题是我在哪一部分做得不对,以及如何使正则表达式只接受10

所以最近,我一直在尝试实现keyup函数,以便在从数据库获取数据后进行搜索。我已经搜索了很多关于这个的问题,并设法找到了一个正则表达式来按顺序匹配数字

这给了我这个表达式
“^[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();
});