我正在使用Dojo 1.6,并且只想在第一次单击时选择文本框的所有文本。我知道我可以dojo.byId("id").select();
用来选择整个文本,但是问题是您不能再对文本进行子选择了。我提供了一个小的代码示例来说明问题。
require(["dojo/parser", "dijit/form/TextBox"]);
require(["dojo/query", "dojo/on", "dojo/domReady!"], function(query, on) {
query("#firstname").on("click", function(evt) {
// this will not work because I want to select 1 or more characters
if (!dojo.byId("firstname").select())
dojo.byId("firstname").select();
});
});
和小提琴:http : //jsfiddle.net/3CLz9/
所以主要的问题是我无法确定是否选择了一个或多个字符。
您可以使用dojo/on
模块的once()
功能。但是我不认为这就是您想要的。我想您想在每次输入字段获得焦点时都选择文本。如果你想要这个,你应该使用的onFocus
情况下,(所以更换"click"
的"focus"
)。
现在唯一的问题是,在选择文本之后,默认事件会将光标移动到所选位置并取消选择文本(您会看到它闪烁)。为了解决这个问题,您还应该绑定一个mouseup
事件处理程序,该事件处理程序在获得焦点时会取消。例如:
query("#firstname").on("focus", function(evt) {
this.select();
on.once(this, "mouseup", function(evt) {
evt.preventDefault();
});
});
我还更新了你的小提琴。
我只是注意到您实际上正在使用dijit/form/TextBox
小部件(在您的JSFiddle上不起作用,所以我没有注意到它),但是您可以使用该selectOnClick
属性轻松地做到这一点。将其添加到您的文件中data-dojo-props
,它将起作用。
例如:
<input type="text" name="firstname" value="testing testing"
data-dojo-type="dijit/form/TextBox"
data-dojo-props="trim:true, propercase:true, selectOnClick: true" id="firstname" />
这是您的小提琴(带有可用的文本框小部件)。如果要对1.7以下的Dojo版本执行相同的操作,则可以按照本小提琴中所述进行操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句