我可以用 <div>
代替 <input type="submit">
来提交一个HTML <form>
吗?
像这样:
<form method="post" action="" id="myForm">
<textarea name="reply">text</textarea>
</form>
<div>Submit the form by clicking this</div>
您可以使用以下方法提交特定的表单:
// Grab the form element and manually trigger the 'submit' method on it:
document.getElementById("myForm").submit();
所以在您的示例中,您可以在任何喜欢的元素上添加点击事件处理程序,并通过它触发表单的提交方法:
<form method="post" id="myForm">
<textarea name="reply">text</textarea>
</form>
<div class="submit">Submit the form by clicking this</div>
const myForm = document.getElementById("myForm");
document.querySelector(".submit").addEventListener("click", function(){
myForm.submit();
});
如果你想用jQuery的方式来做这件事情(我不建议在如此简单的任务上使用jQuery);
$("#myForm").submit();
完整形式如下:
const myForm = $("#myForm");
$(".submit").click(function(){
myForm.submit();
});
参考资料:
是的,这很简单。只需在 click
处理函数中使用 submit
[jQuery 文档] 方法即可。
$("#myDiv").click(function() {
$("#myForm").submit();
});
如果您喜欢,可以使用原生JavaScript完成:
document.getElementById("myDiv").onclick = function() {
document.getElementById("myForm").submit();
};
$('#myDiv').click(function() {
$('#myForm').submit();
});
绑定div的点击事件。
$("div").click(function(){ $("form#myForm").submit(); });
使用jQuery:
$('#myForm').submit();
jQuery('div').click(function () { jQuery('form').submit(); });
然而,您应该使用语义化的HTML,即使没有JS也能正常工作。因此,请使用真实的提交按钮,并应用CSS使其看起来符合您的要求。
<button>
仍然是一个可行的替代方案。 - vzwick为了更好的语义化和优雅降级,我建议您这样做:
$(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();
});
});
$(document).ready(function() {
$('#submitDiv').click(function() {
$('#myForm').submit();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="post" action="" id="myForm">
<textarea name="reply">text</textarea>
</form>
<div id="submitDiv">Submit the form by clicking this</div>
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>
submit
方法并不是很昂贵。它基本上只是调用了本地JavaScript函数。我不确定为什么你如此坚决地不在这种情况下使用jQuery。 - Peter Olson