Javascript 具有相同id的多个输入的jquery按键功能
大家好,有问题吗 这是我的jquery代码Javascript 具有相同id的多个输入的jquery按键功能,javascript,jquery,asp.net-mvc-4,keypress,Javascript,Jquery,Asp.net Mvc 4,Keypress,大家好,有问题吗 这是我的jquery代码 <script type="text/javascript"> $('#com').keypress(function (event) { var comm = $(this).val(); var keycode = (event.keycode ? event.keycode : event.which); if (keycode == 13) { var
<script type="text/javascript">
$('#com').keypress(function (event) {
var comm = $(this).val();
var keycode = (event.keycode ? event.keycode : event.which);
if (keycode == 13) {
var comm = $("#com").val();
alert(comm);
var hidid = $("#hidid").val();
alert(hidid);
$.ajax({
cache: false,
type: "POST",
url: "/Home/postComment",
datatype: "json",
data: { comment: comm, hidid: hidid },
error: function () {
alert("error ");
},
success: function () {
window.location.href = "/Home/Index";
}
});
}
event.stopPropagation();
});
</script>
$('#com')。按键(函数(事件){
var comm=$(this.val();
var keycode=(event.keycode?event.keycode:event.which);
如果(键代码==13){
var comm=$(“#com”).val();
警报(通信);
var hidid=$(“#hidid”).val();
警报(hidid);
$.ajax({
cache:false,
类型:“POST”,
url:“/Home/postComment”,
数据类型:“json”,
数据:{注释:comm,hidid:hidid},
错误:函数(){
警报(“错误”);
},
成功:函数(){
window.location.href=“/Home/Index”;
}
});
}
event.stopPropagation();
});
我是这样叫控制器的
[HttpPost]
public JsonResult postComment(string comment,int hidid)
{
Repository<whichOne> _rwo = new Repository<whichOne>();
Repository<Comment> _rc = new Repository<Comment>();
int _userId = Convert.ToInt32(Session["_userId"]);
Comment _comment = new Comment
{
userId = _userId,
comment = comment,
createDate = DateTime.Now,
isValid = true,
whichOneId = hidid,
};
_rc.Add(_comment);
_rc.Save();
return Json(new { success = true });
}
[HttpPost]
公共JsonResult后命令(字符串注释,int hidid)
{
Repository_rwo=新存储库();
存储库_rc=新存储库();
int _userId=Convert.ToInt32(会话[“_userId]”);
注释_Comment=新注释
{
userId=\u userId,
注释=注释,
createDate=DateTime。现在,
isValid=true,
whichOneId=hidid,
};
_rc.添加(_注释);
_rc.Save();
返回Json(新的{success=true});
}
我有来自数据库的数据,我试图获取数据的id,并从输入中获取评论
@foreach (var item in Model._mywhichOneHelper)
{
@Html.Hidden("hidid",@item.id)
<input type="text" class="pull-left input-sm form-control" id="com" name="comments" style="border-radius: 12px;" placeholder="Your Comments...">}
@foreach(模型中的变量项。\u mywhichOneHelper)
{
@Html.Hidden(“hidid”,@item.id)
}
然而,我只能在写了一些东西后按enter键时才能到达第一个数据。
Keypress不适用于其他数据我可以为此做些什么
正如您看到的,当我编写并单击enter以首次输入时,它可以工作,但当我尝试对其他数据执行此操作时,什么都没有发生。非常感谢。这里的问题是,jQuery选择器只查找第一个元素,因为它只希望一个元素具有id(id应该是唯一的) 让多个元素具有相同的id不是一个好的做法-这是问题的一部分。如果可以重新设计标记,使元素具有唯一的id,但共享一个类(如class=“com”),则可以轻松编写jQuery选择器来查找它们。在这种情况下,仍然有一个解决方法,您可以使用jQuery选择器,如:
[id=com]
而不是#com
,这样可以找到所有匹配的元素,而不是只查找一个(预期的)具有唯一id的元素
还要注意,我必须更改您的事件处理程序,以便它不使用另一个jQuery选择器,而是将值$self
传递到闭包中,以便它保存正确的唯一实例,而不是始终查找第一个实例
$(函数(){
$(“[id=com]”)。按键(函数(事件){
var$self=$(本);
var comm=$self.val();
var keycode=(event.keycode?event.keycode:event.which);
如果(键代码==13){
var comm=$self.val();
警报(通信);
event.stopPropagation();
}
});
});代码>
相同id的多个输入
我停在这里。ID在文档上下文中必须是唯一的。。。当然,您可以使用属性选择器$('[id=com]')
,但不可以,请使用带有有效HTML标记的类。顺便说一句,$(this.val()
编写this.value