我创建这使得一个JavaScript文件时一个文本框获得焦点一个混合

我是新来的挂毯混入的想法,而且我不确定该在何处,我希望为运行时的文本框获得焦点我原来的JavaScript文件。

以下是我的代码的示例: 在Java混合类:

package asc.mixins;

import org.apache.tapestry5.RenderSupport;
import org.apache.tapestry5.annotations.AfterRender;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.InjectContainer;
import org.apache.tapestry5.corelib.base.AbstractTextField;

@IncludeJavaScriptLibrary("js_dasher_mixin.js")
public class DasherMixin {

@Environmental
private RenderSupport renderSupport;

@InjectContainer
private AbstractTextField field;

@AfterRender
void addScript() {
    this.renderSupport.addScript("new JSDasher('%s');", 
            this.field.getClientId());
 }


}

在的Javascript混入文件:

JSDasher = Class.create({

initialize: function(textField) 
{
    this.textField = $(textField);

    this.textField.observe('focus', this.onFocus.bindAsEventListener(this));
},

onFocus: function(event)
{
    //call my javascript init() function
} 
}

我的JavaScript文件的一部分,我希望为运行时的文本框获得焦点:

var posX, posY;


// Sets up our global variables and dispatches an init request to the server.
function init() {

posX=0;
posY=0;
canvas = document.getElementById("canvas"); 
canvasWidth = canvas.offsetWidth;
canvasHeight = canvas.offsetHeight;
if (canvas.getContext) {   
    ctx = canvas.getContext("2d");
}

canvas.onclick = canvasClicked;
canvas.onmousemove = mouseMoved; 

canvasOffsetX = findPosX(canvas);
canvasOffsetY = findPosY(canvas);

sessID = -1;

sendInitRQ(canvasWidth, canvasHeight);

}

我的JavaScript文件比上述大得多,我的问题是,我应该把我上面的javascript代码?

如果这一切被包含在mixin.js文件?如果是的话哪儿应该去了?

预先感谢任何帮助。

有帮助吗?

解决方案

方法是确定的自由浮动在mixin.js但使用类似init的名字,你可能有冲突。你可以把它放在JSDasher类本身或移动身体的聚焦状态的功能。您还可以定义在JSDasher类的任何其它功能,并呼吁他们与this.function_name。看在挂毯源作为例子datefield.js。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top