我有一个表单,将submit按钮替换为输入(使用type=button),使用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中,我希望能够动态地获取表单对象(提交它),而不是硬编码表单的id,或者作为调用confirmSubmit()的一部分传递它。我原以为我可以通过首先获得点击的dom元素(如下所示)来做到这一点:
var form = $(this).parents("form");
其中$(this)是调用函数的对象(即带有onclick的输入)。但这不管用。我认为如果我用.click(function(){
语法设置它,它会工作的。我能得到以不同方式调用函数的元素吗?
编辑-从下面@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-警报插件(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;
}
});
}
发布于 2011-05-20 11:14:32
您可以传递内联处理程序this
关键字,获得触发事件的元素。
喜欢,
onclick="confirmSubmit(this);"
发布于 2011-05-20 11:18:08
如果不希望通过参数将单击的on元素传递给函数,则需要访问正在发生的事件对象,并从该对象获取目标。如果像这样绑定click事件,这是最容易做到的:
$('#sendButton').click(function(e){
var SendButton = $(e.target);
var TheForm = SendButton.parents('form');
TheForm.submit();
return false;
});
发布于 2011-05-20 11:28:50
尝尝这个
<input onclick="confirmSubmit(event);" type="button" value="Send" />
还有这个
function confirmSubmit(event){
var domElement =$(event.target);
console.log(domElement.attr('type'));
}
我在firefox中试过,它会打印单击dom元素的“type”属性。我想您可以使用这个对象通过parents()方法获得表单。
https://stackoverflow.com/questions/6071095
复制相似问题