在 jquery 提交函数中分配全局变量并传递给正则表达式函数
Assign global variable inside jquery submit function and pass to regex function
在提交表单时为全局跟踪变量赋值。
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 is not a function
但是正则表达式函数适用于硬编码值
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;
}
}..
请尝试以下解决方案:
var regexp = new RegExp(tracking);
并且请放在forloop之外。所以优化了。
既然你尝试过
var regexp = "/" + tracking + "/";
会将其转换为字符串。不是正则表达式对象。所以你不会在里面得到测试方法。
希望对您有所帮助:)
在提交表单时为全局跟踪变量赋值。
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 is not a function
但是正则表达式函数适用于硬编码值
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;
}
}..
请尝试以下解决方案:
var regexp = new RegExp(tracking);
并且请放在forloop之外。所以优化了。
既然你尝试过
var regexp = "/" + tracking + "/";
会将其转换为字符串。不是正则表达式对象。所以你不会在里面得到测试方法。
希望对您有所帮助:)