Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
Javascript 在表单元素外部创建一个提交按钮-isn';行不通_Javascript_Jquery_Html_Forms - Fatal编程技术网

Javascript 在表单元素外部创建一个提交按钮-isn';行不通

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

我想在表单元素外创建一个按钮,该按钮将检查输入是否已填写,如果已填写,则提交表单,如果未填写,则执行其他操作(如提示警报或其他操作)

我做了这把小提琴,但它不起作用:

HTML:


这里的问题是变量范围。您可以这样做:-

$("#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();