调用函数但表单id未知

时间:2016-02-22 02:15:31

标签: jquery

尝试调用提交函数但表单ID未知。表单id将是“#viewemails_0”,但0可以是任何数字。

这里我对表单ID进行了硬编码。这有效但需要更具动态性的东西。

void LinkedList::removeDuplicates() 
{
    Node* traverse = m_front;
    Node* duplicate = nullptr;

    if (!isEmpty())
    {
        Node* nextNode = traverse->getNext();
        while(nextNode != nullptr)
        {
             if (traverse->getValue() == nextNode->getValue())
             {
                std::cout << "Found duplicate\n";
                duplicate = nextNode;
                nextNode = nextNode->getNext();

                delete duplicate;
                duplicate = nullptr;

                traverse->setNext(nextNode);
                continue;  // Don't advance again, we already skipped an element.
            }

            traverse = nextNode;
            nextNode = nextNode->getNext();
        }
    }
}

我试过这样的事情,但页面刷新保持firefox。我相信它没有正确地解决这个问题。

以下是我尝试但不工作的内容

窗口警报有效,我可以正确查看表单ID。

$(document).ready(function () {

    $("#viewemails_0").submit(function (e) {
        //Stops the submit request
        e.preventDefault();
    });
});

这是我的HTML / PHP表单

function viewemails(obj) {
  var formname = obj.name;
  alert(formname);

  $("#"+formname).submit(function (e) {

    e.preventDefault();

  });

}

1 个答案:

答案 0 :(得分:2)

您正在将event listeners与显式事件回调混合(即onsubmit)。使用其中一种,我推荐前者。

当发生onsubmit表达式时,表单已经提交,因此在此时设置 submit 事件监听器为时已晚。另外,看到onsubmit="return ..."viewemails函数应该返回一个布尔值。

要仅使用事件侦听器,您只需使用类来标识表单,即

<form id="viewemails_<?= $i ?>" class="whatever"...

(注意,不需要onsubmit)和你的JS

jQuery(function($) { // document ready handler
    $('form.whatever').on('submit', function(e) {
        e.preventDefault();

        var formId = this.id;
        // and so on
    });
});

或者如果您想使用事件委托(如果在加载页面后添加表单,或者您不想使用文档 ready 处理程序)

jQuery(document).on('submit', 'form.whatever', function(e) {
    e.preventDefault();
    var formId = this.id;
    // etc
});