Jquery 在没有提交按钮的情况下提交HTML表单?
我可以用Jquery 在没有提交按钮的情况下提交HTML表单?,jquery,html,forms,Jquery,Html,Forms,我可以用而不是提交html吗 像这样: <form method="post" action="" id="myForm"> <textarea name="reply">text</textarea> </form> <div>Submit the form by clicking this</div> 文本 通过单击此按钮提交表单
而不是
提交html
吗
像这样:
<form method="post" action="" id="myForm">
<textarea name="reply">text</textarea>
</form>
<div>Submit the form by clicking this</div>
文本
通过单击此按钮提交表单
您可以使用以下方法提交特定表单:
//获取表单元素并手动触发其上的“submit”方法:
document.getElementById(“myForm”).submit();
因此,在您的示例中,您可以在任何喜欢的元素上添加click事件处理程序,并通过以下方式触发表单的submit方法:
文本
通过单击此按钮提交表单
const myForm=document.getElementById(“myForm”);
document.querySelector(“.submit”).addEventListener(“单击”,函数)(){
myForm.submit();
});
如果你想用jQuery风格(我不推荐这么简单的任务用jQuery风格)
$(“#myForm”).submit();
全文如下:
constmyform=$(“#myForm”);
$(“.submit”)。单击(函数(){
myForm.submit();
});
参考文献:
- HTML表单元素的方法(本机
)JavaScript API
APIjQuery
$('#myForm').submit();
绑定div click事件
$(“div”)。单击(函数(){$(“表单#我的表单”)。提交();})代码>是的,它相当简单。只需在click
处理程序函数中使用该方法
$("#myDiv").click(function() {
$("#myForm").submit();
});
如果您愿意,可以使用香草Javascript:
document.getElementById("myDiv").onclick = function() {
document.getElementById("myForm").submit();
};
仅通过使用JavaScript,您通常会使用div的click事件并将其绑定到表单的submit事件
见:
这里的示例甚至演示了这个确切的场景。如果您不必要地依赖JavaScript,那么您可以
$('#myDiv').click(function() {
$('#myForm').submit();
});
jQuery('div').click(function () { jQuery('form').submit(); });
…但是,您应该使用不存在JS的语义HTML。因此,使用一个真正的提交按钮并应用CSS使其看起来像您想要的样子。这样如何:
$(文档).ready(函数(){
$('#submitDiv')。单击(函数(){
$('#myForm')。提交();
});
}); 代码>
文本
通过单击此
提交表单要获得更好的语义和优雅的降级,我建议您执行以下操作:
$(document).ready(function(){
$('form input[type="submit"]').replaceWith('<div class="submit">Submit the form by clicking this</div>'); // replace submit button with div
$('.submit').live('click', function() {
$(this).closest('form').submit();
});
});
$(文档).ready(函数(){
$('form input[type=“submit”]”)。replaceWith('submit the form by click this');//将提交按钮替换为div
$('.submit').live('click',function(){
$(this).closest('form').submit();
});
});
这样,您的表单对于没有JS的客户端仍然可用
也就是说:只需使用CSS将输入样式设置为所需的样式;) 为什么不把一个按钮设计成一个普通的div呢?:)
输入您的文本:
只需点击“回车”键,也将提交一个没有按钮或JavaScript的表单。@Sparky672-因为表单中只有一个文本区域……不,它不会。不幸的是,提交按钮的样式设置受到限制。他们可能没有足够的灵活性来满足他的目的。@PeterOlson
仍然是一个可行的选择。对不起,昆汀,你是对的。当你说“文本区域”时,我错误地想到了“文本框”。为什么现在每个人都使用jquery来完成最简单的任务?jQuery将在这个解决方案之上添加大约500条CPU指令。如果你可以做一些简单的事情,为什么不直接做呢?@japrescott jQuery中的submit
方法并不昂贵。它基本上只调用本机Javascript函数。我不知道你为什么这么坚决不在这种情况下使用jQuery。@japrescott,因为OP用jQuery标记了他的问题!我想说jQuery方法更简洁,但并不简单。他们都是一对一。对于此任务而言,jQuery将是一种过分的技巧。:)如果问题需要JQuery,那么jqueryvjs的愚蠢讨论就无关紧要了。人们对JS做各种各样的陈述,这一点和那一点都非常狂热。从长远来看,关键在于客户得到什么,而不是如何做到。我看到顶级AAA游戏中发布了完全垃圾的代码,令人惊讶的优化代码被扔掉了。忘了那些传福音的人吧,他们的结果和解决方案都很重要。这不是你本周最喜欢的东西。因为“提交”按钮必须在表单之外。@RiMMER啊,错过了一个非常简单的jquery插件:我们可以通过迭代每个提交输入来优化它,用一个单独的输入替换每个输入。这段代码目前无法工作,因为它是跨站点伪造的,
button{
border:none;
background:none;
padding:0;
text-align:left;
}
<?php
if(isset($_POST['text']) && !empty($_POST['text']))
{
echo $text_val = $_POST['text'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="Enter your action">
<p><label>Enter your Text : </label>
<input type="text" name="text" id="text" onmouseover="this.form.submit();"></input>
</p>
</form>
</body>
</html>