获取clicked元素的id但得到错误的目标

时间:2017-03-03 14:08:39

标签: jquery

我需要获取用于提交表单的按钮的id(使用jquery ajax)。 这是一个包含#"博客形式":

的表单
 <button id="uploador" type="submit"> Upload an image</button>

这是用于使用ajax / jquery提交表单的按钮。目标是获得&#34; uploador&#34; id值

 $( '.blog-form' ).on( 'submit', function( e ) {
            e.preventDefault();
            console.log(e);
           //rest of code

这是jquery:

 public function mainBundle() {

 $myEvent = MyEvent();
 $this->getContainer()->get('event_dispatcher')->addListener('my_test_event', $myEvent)
 $data = $myEvent->getData;

}

我无法找到获取所点击按钮的ID的方法&#39; uploador&#39;在&#39; e&#39;事件。目标显示表单,而不是按钮。 去哪儿看?看了很多帖子,但大多数都要求查看目标,这不是解决方案。

3 个答案:

答案 0 :(得分:1)

为您的按钮定义名称属性以获取表单元素。然后使用document.getAttribute()获取按钮的ID。

HTML

<form method="post" class="blog-form" action="#t"  enctype="multipart/form-data">
 <button id="uploador" type="submit" name="upload"> Upload an image</button>
 </form>

JS

var form =  document.querySelector(".blog-form");
 form.addEventListener('submit',function(){
 var btn =this.elements["upload"];
 //console.log(btn);
alert(btn.getAttribute('id'));
 });

See Fiddle

答案 1 :(得分:1)

您可以从事件中获得的表单中获取按钮的ID。

$( '.blog-form' ).on( 'submit', function( e ) {
    e.preventDefault();
    alert($(e.target).children("button[type='submit']").attr("id"));
});

答案 2 :(得分:0)

好吧,您可能想要使用全局js变量:

<script type="text/javascript">
    var pushedButtonId = false;
</script>

下面再说:

<script type="text/javascript">
    $('#uploador').on('click', function() {
        pushedButtonId = $(this).attr('id');
    });
    $('.blog-form').on('submit', function(e) {
        e.preventDefault();
        console.log(e);
        if (pushedButtonId === false) {
            return; // The form wasn't submitted by hittig the button 
        }
        //pushedButtonId variable has the button id
        //rest of code
    });
</script>