我有一个不包含提交按钮的Dojo表单。相反,我添加了一个onkeypress处理程序来在按下Enter时调用方法。我遇到的问题是,当我在模糊当前字段之前按Enter键时,_process方法认为该字段为空。
或换句话说:输入field1。点击标签。输入field2。打进去。 field2是空白的,除非我点击字段或移位标签。
有什么想法吗?
dojo.connect(dijit.byId("fkrform"),"onKeyPress",function(e) {
if (e.keyCode == dojo.keys.ENTER) {
_process();
}
及其调用的方法:
function _process()
{
var field1 = dijit.byId("field1").value;
var field2 = dijit.byId("field2").value;
alert(username);
alert(password);
...do stuff...
}
字段是dojoType:dijit.form.TextBox,格式为:dijit.form.Form
答案 0 :(得分:4)
使用dijit.byId('field1').get('value')
而不是直接尝试访问属性“value”。在您的示例中,您将值保存在变量field1
和field2
中,并在警报中使用变量username
和password
可能是您无法获得的答案任何东西。但您仍然应该使用get
方法来获取属性,而不是直接访问该属性。
当您按“Enter”时,您的表单将会提交。因此,您需要连接到表单上的“onSubmit”事件,而不是onkeyPress
或onKeyUp
。
我创建的第一个示例在控制台中按下的每个键上打印输入框的值。
但你真正想要的是挂钩提交。我修改了这个例子。新示例连接到“onSubmit”并创建一个包含用户输入文本的警告框。
如果jsfiddle某天不起作用,那就是完整性。 JavaScript应该是这样的。
dojo.ready(function(){
var form = dijit.byId('form');
var box = dijit.byId('box');
var submit = function(event) {
dojo.stopEvent(event);
alert("User input was " + box.get('value'));
};
dojo.connect(form, 'onSubmit', submit);
});
假设您的HTML中的表单的ID为form
,并且您的框的ID为box
。