Javascript 在表单元素外部创建一个提交按钮-isn';行不通
我想在表单元素外创建一个按钮,该按钮将检查输入是否已填写,如果已填写,则提交表单,如果未填写,则执行其他操作(如提示警报或其他操作) 我做了这把小提琴,但它不起作用: HTML:Javascript 在表单元素外部创建一个提交按钮-isn';行不通,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我想在表单元素外创建一个按钮,该按钮将检查输入是否已填写,如果已填写,则提交表单,如果未填写,则执行其他操作(如提示警报或其他操作) 我做了这把小提琴,但它不起作用: HTML: 这里的问题是变量范围。您可以这样做:- $("#to-top").click(function () { var bas_name = $("#inp_name").val(); var bas_address = $("#inp_address").val(); var bas_zipcod
这里的问题是变量范围。您可以这样做:-
$("#to-top").click(function () {
var bas_name = $("#inp_name").val();
var bas_address = $("#inp_address").val();
var bas_zipcode = $("#inp_zipcode").val();
var bas_city = $("#inp_city").val();
if (bas_name == "" && bas_address == "" && bas_zipcode == "" && bas_city == "") {
alert("nonoonnono!");
} else {
$("form").submit();
}
});
此问题发生于,您将所有变量保留在click事件之外。因此,它总是在页面加载时存储空值,因此您的代码无法工作。
但是,在单击锚定标记时,您需要在文本框中获取当前值,然后执行所有验证
希望你明白我的意思 您必须在单击后获取值
$("#to-top").click(function() {
var bas_name = $("#inp_name").val();
var bas_address = $("#inp_address").val();
var bas_zipcode = $("#inp_zipcode").val();
var bas_city = $("#inp_city").val();
if(bas_name == "" && bas_address == "" && bas_zipcode == "" && bas_city == "") {
alert("nonoonnono!");
} else {
$("form").submit();
}
});
试试这个
$(document).on("click", "#to-top", function() {
//Your code
});
可能需要查看submit上的form functionon,在这里您可以调用您编写的js函数并返回true或false。下面是一个简单的例子: 之后,使用jQuery可以方便地从任何地方调用表单submit
$("#myForm").submit();
或使用javascript:
var bas_name = $("#inp_name").val();
var bas_address = $("#inp_address").val();
var bas_zipcode = $("#inp_zipcode").val();
var bas_city = $("#inp_city").val();
$("#to-top").click(function() {
if(bas_name == "" && bas_address == "" && bas_zipcode == "" && bas_city == "") {
alert("nonoonnono!");
} else {
$("form").submit();
}
});
document.getElementById("myForm").submit();
是的,这应该能解决问题……从技术上讲,这不是范围,而是时机。事件处理程序可以访问这些变量,但设置得太早了。@MattBrowne:是的,对。你基本上掌握了主要概念!这是可行的,但在我的实际应用程序中,表单在执行.submit()时怎么会跳到顶部呢?在本例中,它与表单操作上的警报配合得很好,但当我插入URL来处理数据和内容时,它只会跳到顶部,不再执行任何操作。@Dueify:我认为您需要使用阻止锚定标记的默认操作。更新的代码,我尝试了,没有工作,虽然它现在没有跳转到顶部…工作得很好,唯一的问题是我可以提交表格,只有1个输入填写,我想我要求所有的输入填写?在if语句中,你应该使用或而不是ANDOk谢谢。我唯一的问题是在我的实时应用程序中,它没有提交表单,它只跳到页面顶部,但没有继续提交。。。。奇怪的是,它与动作表单中的警报一起工作。
document.getElementById("myForm").submit();