在jquery提交函数中分配全局变量并传递给regex函数

时间:2018-02-08 04:28:02

标签: javascript jquery regex tabletop.js

在提交表单时为全局跟踪变量分配值。

var tracking;

$('.form-inline').submit(function (e) {
  e.preventDefault();
  tracking = jQuery('input[name="tracking"]').val();
  init()
})

执行函数init()

function init() {
  Tabletop.init({
    key: public_spreadsheet_url,
    callback: showInfo,
    simpleSheet: true
  })
}

启动showInfo回调

var zipMatches = "";
function showInfo(data, tabletop) {
  alert('Callback initiated..');
  for (var i = 0; i < data.length; i++) {
    var myRegex = '/' + tracking + '/';
    console.log(myRegex)
    if (myRegex.test(data[i].tracking)) {
      zipMatches = zipMatches + data[i].location_1 + ", " + data[i].location_2 + ", " + data[i].location_3;
    }
  }
  //write it into the DOM 
  var myElement = document.querySelector(".myJSON");
  myElement.innerHTML = "<h3>List of Zipcodes that match tracking ID: </h3><p>" + zipMatches + "</p>";
}
  

myRegex.test不是函数

然而,正则表达式函数适用于硬编码值

if (/ABCD123/.test(data[i].tracking)) {...

如何将正则表达式值作为全局变量传递?

...

编辑(工作回调函数):

function showInfo(data, tabletop) {
  var regexp = new RegExp(tracking);
  for (var i = 0; i < data.length; i++) {
    if (regexp.test(data[i].tracking)) {
      zipMatches = zipMatches + data[i].location_1 + ", " + data[i].location_2 + ", " + data[i].location_3;
    }
  }.. 

1 个答案:

答案 0 :(得分:1)

请尝试使用以下sol:

var regexp = new RegExp(tracking);

请把它放在forloop之外。所以它被优化了。

既然你已经尝试过了   var regexp = "/" + tracking + "/";会将其转换为字符串。不是正则表达式对象。所以你不会得到测试方法。

希望有所帮助:)