具有意外结果的 Javascript 函数参数
Javascript function parameter with unexpected result
我有一个简单的javascript函数,可以打开一个模态对话框。如果我传递给它一些参数,它将毫无问题地打开。我正在使用jQuery在我的网站上启用一些键盘功能。基本上,用户将浏览一堆表格单元格,找到他们正在寻找的值并点击"Enter"。我有一个事件侦听器在等待键码 13。当它触发时,我从该单元格中获取 HTML,通过正则表达式运行它并拉出一个字符串。我获取该字符串并将其传递给我的javascript函数。
如果我将值硬连线到函数中,它可以正常工作,如果我从正则表达式返回的字符串传递给它,它总是失败。如果我将硬连线值与正则表达式的结果进行比较,它们是 100% 相同的。我无法理解为什么该函数不会接受从正则表达式返回的变量。
Javascript函数:
function openDetail(event, newWindow, className, methodName, param, param1, param2) {
param = (typeof param === "undefined") ? "defaultValue" : param;
param1 = (typeof param1 === "undefined") ? "defaultValue" : param1;
param2 = (typeof param2 === "undefined") ? "defaultValue" : param2;
newWindow = (typeof newWindow === "undefined") ? "defaultValue" : newWindow;
var windowName = '';
if (newWindow == true) {
windowName = '#openExtendedDetailWindow';
} else {
windowName = '#openDetailWindow';
}
param = param.trim();
param1 = param1.trim();
param2 = param2.trim();
var page = "?url=" + className + "/" + methodName + "/" + param + "/" + param1 + "/" + param2;
$(windowName).dialog({
width: 'auto',
height: 'auto',
resizable: true,
modal: true,
position: 'center',
open: function (event, ui) {
$(this).load(page, function () {
});
},
show: {
effect: 'fade',
duration: 800
}
});
event.preventDefault();
}
Javascript 用于我的数据网格和键下事件侦听器:
$(document).ready(function () {
$('#warehouseSelection').change(function (event) {
var warehouse = $('#warehouseSelection').val();
window.location.replace("?url=FHInventory/index/" + warehouse);
event.preventDefault();
});
var table = $('#contentTable').DataTable({
"paging": false,
"jQueryUI": true,
"scrollX": true,
columnDefs: [
{
targets: [ 0 ],
orderData: [ 0, 1 ]
},
{
targets: [ 1 ],
orderData: [ 1, 0 ]
},
{
targets: [ 4 ],
orderData: [ 4, 0 ]
}
]
});
$keys = new $.fn.dataTable.KeyTable( table );
$("body").on("keydown",$("form.form-horizontal"), function (e) {
if (e.keyCode == 13) {
$url = $keys.fnGetCurrentData();
alert($url);
var regExp = /'(([^)]+)')/;
var matches = regExp.exec($url);
$params = matches[1];
alert($params);
openDetail(String($params));
}
});
});
硬连线的 HTML(这有效),
<td>
<a class="masterTooltip" href="" title="Received" onclick="openDetail(event,false,'Inventory','receivedSpecificDate','27934','RADCH6LC0081', '20150117')">0</a>
</td>
如果你的函数调用参数包含在逗号分隔的列表中,从你的评论听起来像你这样做,你可以使用 split
将它们变成一个数组,splice
在开始时添加事件对象,然后apply
$("body").on("keydown",$("form.form-horizontal"), function (e) {
if (e.keyCode == 13) {
$url = $keys.fnGetCurrentData();
alert($url);
var regExp = /'(([^)]+)')/;
var matches = regExp.exec($url);
$params = matches[1];
alert($params);
//this assumes that none of your parameters actually have a comma in
//if they do, you'll need to split up the string into an array
//in a different manner
//It also splices in the current event (e) to the first parameter
openDetail.apply(this, $params.split(',').splice(0,0,e));
}
});
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别