#javascript #jquery #forms
#javascript #jquery #формы
Вопрос:
Вот 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;
});
Я получаю неопределенную ошибку не является функцией после «form = $.createElement(«form»);»
Как я могу это решить?
(Это linker.js вызывается другим javascript в моем программном обеспечении.)
Комментарии:
1. Знак доллара чаще всего ассоциируется с jQuery в javascript, а переменные, начинающиеся со знака доллара, обычно обозначают объекты jQuery. Было бы странно видеть
var $form = document.createElement('form')
, но чаще видетьvar $form = $('<form>')
, как вы создаете элемент формы в jQuery. Имена переменных, начинающиеся со знака доллара, которые являются обычными значениями javascript, могут вводить в заблуждение.
Ответ №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. Делает ли действие $form.attr что-то с фактической ссылкой, которая передается ему? ссылка — это URL-адрес (полностью отличный от моего текущего URL-адреса), который я передал функции, но он превращается в объект внутри формы.attr?
Ответ №2:
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();