我是meteor
的新手,请任何人帮我解决下面的问题。
首先让我清楚一下我正在做什么项目。
我有一个存储用户详细信息的集合,因此我想编辑用户信息。我正在使用iron-router
,因此当我在网址中输入user_id
时,它会在文本框中显示用户详细信息,因此我可以对其进行编辑。
当我点击“编辑”按钮时,我可以保存已编辑的用户详细信息,但我想自动更新详细信息,因此我尝试使用keyup
事件,但它无效。
当我处理keyup
事件而不是submit
时,我收到以下错误:
无法在Object.keyup .sub
中读取undefined的属性'value'
以下是我的js代码:
Router.route('/temp1/:_id', function () {
var pid = this.params._id;
this.render('temp1', {
data: function () {
return Dbs.findOne({ user_id: pid });
Router.go("/temp1", {}, { id: pid });
}
});
});
Template.temp1.events({
'keyup .sub'(event) {
const target = event.target;
const user_id1 = target.user_id.value;
const add1 = target.add.value;
const cont1 = target.cont.value;
const pth1 = target.pth.value;
var p = Dbs.findOne({ user_id: Router.current().params._id });
Dbs.update({ _id: p._id }, {
$set: {
user_id: user_id1,
cont: cont1,
add: add1,
pth: pth1
}
});
console.log(user_id1);
alert(user_id1);
}
});
Html代码:
<form class="sub">
<input type="text" name="user_id" value="{{user_id}}"/>
<input type="text" name="add" value="{{add}}"/>
<input type="text" name="cont" value="{{cont}}"/>
<input type="text" name="pth" value="{{pth}}" />
<!--<center><input type="submit" value="Submit" class="waves-effect #607d8b grey btn"></center>-->
</form>
答案 0 :(得分:2)
当您使用submit .sub
事件时 - 在您的处理程序中event.target
为form
,这就是target.user_id.value
等结构正在发挥作用的原因。< / p>
当您使用keyup .sub
事件时,此keyup
事件会从其input
元素冒泡到表单,因此event.target
将指向input
发送此事件的1}}。
有两种方法来修复&#34;你的问题:
使用event.currentTarget
代替event.target
替换此行:
const target = event.target;
这一个:
const target = $(event.target).closest('form').get(0);
因此,您的target
变量将始终指向form
元素。