end*_*der 6 javascript jquery internet-explorer-8
我正在尝试找到一种跨浏览器兼容的方法,以挑选在具有两个不同提交按钮的表单提交过程中单击的按钮的id属性。我可以使用以下代码为FireFox完成此操作,但由于它们不支持explicitOriginalTarget,因此无法在IE 8或Chrome中运行。
$("#postForm, #dialogPostForm, #pastPostForm").live('submit', function(event) {
event.preventDefault();
if (event.originalEvent.explicitOriginalTarget.id === 'pastPosts'){
...SNIP...
Run Code Online (Sandbox Code Playgroud)
有人可以建议使用兼容跨浏览器的方法吗?
更新我尝试使用“ 如何获取导致表单提交事件中的提交的按钮”中的答案?,但我想使用.live jquery方法并使用事件对象选择原始输入的提交ID。
更新这是我试图从中获取原始提交按钮ID的表单:
<form id="postForm" action="{% url account_tracker mashup.pk %}?fuzzy=true" method="post">
<div class="mygoal">Update Your Progress: {{ form.post }}
<input type="submit" value="+ 1" class="formbtn" style="font-size:18px;"/>
<input type="submit" value="This week" style="font-size:18px;" id="pastPosts" class="formbtn"/>
<span id="result" class="results"></span>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
更新我想出了自己的解决方案。添加一个onclick属性,该属性将“名称”属性添加到表单。然后在表单处理中检查表单名称是否为“过去”,并对其进行处理,然后在表单完成处理后删除该属性。据我所知,这适用于所有浏览器。
<input type="submit" value="This week" style="font-size:18px;" id="pastPosts" class="formbtn" onclick="$('#postForm').attr('name', 'past');" />
Run Code Online (Sandbox Code Playgroud)
鉴于:
<div id="parent">
<div id="child">
clicky
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我们可以应用以下逻辑:(更新)
$('#parent').live('click', function(e){
var target = e.originalEvent || e.originalTarget;
console.log($(target.srcElement || target.originalTarget).attr('id'));
});
Run Code Online (Sandbox Code Playgroud)
如果我点击 child,这会在 Chrome、IE9 和 FF8 中为我提供“child”。