Undefined不是一个函数:在创建表单Javascript时

时间:2014-06-27 17:54:48

标签: javascript jquery forms

这是linker.js

deps = ['jquery'];
define (deps, function($) {
          var linker = {
               'link' : function(ortholog,link) {
               $form = $.createElement("form");                   
               $form.setAttribute("method", "POST");                   
               $form.setAtrribute("action", link);
               $form.setAttribute("onsubmit" ,window.open(action+ortholog));
               $('body').append($form);
               $form.setAttribute("target","_blank");
               $form[0].submit();
               }
              //return linker();
          }
          return linker;
   });

我得到一个undefined不是“form = $ .createElement(”form“)之后的函数错误;” 我怎么解决这个问题? (这个linker.js在我的软件中被另一个javascript调用。)

2 个答案:

答案 0 :(得分:1)

为什么不......

deps = ['jquery'];
define (deps, function($) {
    var linker = {
        'link' : function(ortholog,link) {
            $form = $('<form>');
            $form.attr({
                method: 'POST',
                action: link,
                target: '_blank'
            }).appendTo('body');

            $form.submit(function() {
                window.open(action+ortholog);
            });

            $form.submit();
        }
        //return linker();
    }
    return linker;
});

答案 1 :(得分:-1)

jQuery没有$.createElement函数,但document没有:

$form = document.createElement("form");                   

此外,您的onsubmit不对。 window.open将立即执行。您需要为属性分配一个函数,如下所示:

$form.onsubmit = function(){
    window.open(action+ortholog)
};

最后,您的submit()来电正在使用$form[0]。这是一个问题,因为$form是一个DOM元素,所以你不应该使用[0]后缀。

$form.submit();