chrome和IE 8的explicitOriginalTarget.id替代

时间:2011-11-09 16:04:10

标签: javascript jquery internet-explorer-8

我正在尝试找到一种跨浏览器兼容的方式来挑选在具有两个不同提交按钮的表单提交期间单击的按钮的id属性。我能够使用以下内容为FireFox完成此操作,但它不能在IE 8或Chrome中使用,因为它们不支持explicitOriginalTarget。

   $("#postForm, #dialogPostForm, #pastPostForm").live('submit', function(event) {
     event.preventDefault();
     if (event.originalEvent.explicitOriginalTarget.id === 'pastPosts'){
     ...SNIP...

有人建议使用跨浏览器兼容的方式吗?

更新我尝试使用How can I get the button that caused the submit from the form submit event?的答案,但我想使用.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>

更新我提出了自己的解决方案。添加一个onclick属性,为表单添加“name”属性。然后在表单处理中检查表单名称是否为“过去”并对其执行某些操作,然后在表单处理完毕后删除该属性。据我所知,这适用于所有浏览器。

 <input type="submit" value="This week" style="font-size:18px;" id="pastPosts" class="formbtn" onclick="$('#postForm').attr('name', 'past');" />

1 个答案:

答案 0 :(得分:0)

假设:

<div id="parent">
    <div id="child">
        clicky
    </div>
</div>

我们可以应用以下逻辑:(更新)

$('#parent').live('click', function(e){
    var target = e.originalEvent || e.originalTarget;
    console.log($(target.srcElement || target.originalTarget).attr('id'));
});

如果我点击儿童,这会让我在Chrome,IE9和FF8中成为'孩子'。