[英]Javascript error: $(…).observe is not a function
我正在尝试在 Tapestry 5.3.7 中使用Stitch onEvent mixin 。
这是那里的OnEvent
Javascript:
T5.extendInitializers({
onEvent: function (spec) {
var element = $(spec.id).observe(spec.event, function () {
var params = {};
if (spec.fieldIds) {
for (var i = 0; i < spec.fieldIds.length; ++i) {
var fieldId = spec.fieldIds[i];
var paramName = "onEvent." + fieldId;
var paramValue = $(fieldId).getValue();
params[paramName] = paramValue;
}
}
var zoneManager = Tapestry.findZoneManagerForZone(spec.zone);
zoneManager.updateFromURL(spec.url, params);
});
}
});
我像这样在我的 TML 中使用它:
<t:form t:id="filterTextForm">
<div style="float:right">
<input id="filterText" t:id="filterText" t:type="textfield"
t:value="filter" zone="configZone" t:autofocus="literal:true" onClick="this.select()" t:mixins="onEvent" event="keyup"/>
</div>
</t:form>
我的事件方法是这样的:
void onKeyupFromFilterText(String filter) {
this.filter = filter;
if (request.isXHR()) {
ajaxResponseRenderer.addRender(configZone).addRender(descZone);
}
}
当我有t:mixins="onEvent" event="keyup"
,页面上没有任何区域正在更新,也没有生成 AJAX 请求。
当我删除它时,一切正常,除了我试图做的部分,在我的问题中描述。
我正在使用 Tapestry 5.3.7。
observe() 是一个原型函数。 我猜你正在使用tapestry-jquery ,它是一个第3方库,它删除了原型并将其替换为jquery。
您需要调整 javascript 以使用 jquery(例如,observe() 需要更改为on() )
您可能会发现 js 的其他部分也损坏了(例如,我不确定 Tapestry-jquery 的 ZoneManager 是否与核心挂毯完全相同)。
Tapestry-jquery 带有一个内置的bind mixin,它与onevent
做类似的工作。 你可能会发现使用这个 mixin 就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.