Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在没有提交按钮的情况下提交HTML表单?_Jquery_Html_Forms - Fatal编程技术网

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
  • jQuery
    API
使用jquery:

$('#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>