У меня есть форма, где я заменил кнопку отправки с помощью ввода (с кнопкой type =) с помощью кнопки onclick, которая вызывает существующую функцию:
<form accept-charset="UTF-8" action="/admin/message_campaigns" class="new_message_campaign" id="new_message_campaign" method="post">
<!-- some fields -->
<input onclick="confirmSubmit();" type="button" value="Send" />
</form>
В confirmSubmit я хотел бы иметь возможность динамически получать объект формы (отправить его), вместо того, чтобы жестко кодировать идентификатор формы или передавать его как часть вызова confirmSubmit(). Я бы подумал, что могу сделать это, сначала получив элемент dom, на который был нажат, например, что-то вроде этого:
var form = $(this).parents("form");
где $(this) - это объект, который вызывает функцию, т.е. ввод с помощью onclick. Однако это не работает. Я думаю, что это сработает, если я установил его с синтаксисом .click(function(){
. Могу ли я получить элемент, который вызвал функцию по-другому?
EDIT - получил ответ от @claudio ниже, для ясности здесь полная функция и вызов:
<form accept-charset="UTF-8" action="/admin/message_campaigns" class="new_message_campaign" id="new_message_campaign" method="post">
<!-- some fields -->
<input onclick="confirmSubmit($(this));" type="button" value="Send" />
</form>
и самой функции. Обратите внимание, что "jConfirm" - это метод плагина jquery-warn (http://abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/), но это не имеет особого отношения к этому вопросу - главное было просто чтобы получить объект формы, а не то, что впоследствии было сделано с ним:
function confirmSubmit(caller) {
var form = caller.parents("form");
jConfirm('Are you sure?', 'Please Confirm', function(result){
if (result) {
form.submit();
} else {
return false;
}
});
}