我已经创建了一个带有提交按钮的表单,提交按钮位于实际表单之外,但是通过使用form属性来定位表单,例如:
<form id="myform">
</form>
<button form="myform"></button>
对于这个例子的不足我深感歉意。除了IE 11之外,它在所有浏览器上都可以正常工作。您有什么想法能够解决这个问题吗?我不想写脚本,虽然可以用jQuery 实现,但如果可能的话,我更愿意保持代码整洁。
我已经创建了一个带有提交按钮的表单,提交按钮位于实际表单之外,但是通过使用form属性来定位表单,例如:
<form id="myform">
</form>
<button form="myform"></button>
对于这个例子的不足我深感歉意。除了IE 11之外,它在所有浏览器上都可以正常工作。您有什么想法能够解决这个问题吗?我不想写脚本,虽然可以用jQuery 实现,但如果可能的话,我更愿意保持代码整洁。
这是一个只需单击事件和一行CSS即可解决的方案。(最小化)
如果由于用户界面设计,您的按钮必须位于表单外部。
我建议您在表单内添加一个输入提交/按钮:
<form id="myform">
<input type="button" value="Submit" class="myButton" />
</form>
<button id="outerBtn">Submit</button>
隐藏输入框:
.myButton {display:none;} OR {visibility:none;}
$('#outerBtn').on('click', function(e){
e.preventDefault();
$('.myButton').trigger('click');
});
这只是一些快速的回答。应该没问题。 如果您不想编写脚本,我建议您将输入按钮/提交按钮保留在表单内。
document.getElementById('myform').submit()
或使用jQuery $('#myform').submit()
。 - bjunix.hiddenSubmitButton {
display: none;
}
$("body").on("click", "button[form]", function () {
/*This will get the clicks when make on buttons with form attribute
* it's useful as we commonly use this property when we place buttons that submit forms outside the form itself
*/
let form, formProperty, formAttribute, code, newButtonID;
formProperty = $(this).prop("form");
if (!(formProperty === null || formProperty === "")) {//Most browsers that don't wsupport form property will return null others ""
return; //Browsers that support the form property won't continue
}
formAttribute = $(this).attr("form");
form = $("#" + formAttribute);
newButtonID = formAttribute + "_hiddenButton";
if (document.getElementById(newButtonID) !== null) {
$("#" + newButtonID).click();
return;
}
code = '<input id="' + newButtonID + '" class="hiddenSubmitButton" type="submit" value="Submit" />';
$(form).append(code);
setTimeout(function () {
$("#" + newButtonID).click();
}, 50);
});
我喜欢在表单之外创建按钮的一件事是,它们允许我们更轻松地自定义设计,并且我们可以使用此代码,在旧浏览器上也可以正常工作,而且浏览器将使用其HTML表单验证器。
<form id="form-any-name">
<input type="button" value="Submit" class="myButton" />
</form>
<button type="submit">Submit</button>
<script type="text/javascript">
$(document).ready(function() {
$('button[type=\'submit\']').on('click', function() {
$("form[id*='form-']").submit();
});
});
</script>
只需在文档就绪提交捕获器中包含代码,您可以将该代码放置在主JS文件中,因为我们动态捕获表单ID以form-开头,所以在其他页面上您可以拥有不同的表单:)
IE浏览器可以理解'for',你可以使用"label for=''"。
<label for="form_one_submit">Button one</label>
<form action="" id="form_one">
<span></span>
<input type="submit" id="form_one_submit" style="visibility:hidden;">
</form>