javascript - 提交时显示隐藏的 Div 但表单无效

标签 javascript jquery forms validation

我正在使用 .slideToggle() 来隐藏/显示属于同一表单的 2 个 div。第一部分是用户信息,第二部分是订单部分。

一切都工作得很好,除非用户通过 SlideToggle 隐藏了顶部部分(用户信息),但当他们单击“提交”时它无效(意味着字段缺少数据或不是正确的数据)按钮,它只是将字段突出显示为红色,并在浏览器(在本例中为 Firefox)的右下角放置一条消息,提示“此字段无效”。但用户不知道哪个字段无效,除非他们单击 div 使其再次激活 slipToggle。

我试图做到这一点,以便当用户单击提交按钮时,如果表单无效(使用 HTML5“必需”字段或模式),它将显示隐藏的(通过 SlideToggle)div,以便用户知道为什么他们的表单没有通过。

这是我迄今为止尝试过的代码:

$("form").submit(function(){
    var testvalue = "Hi!";
    alert(testvalue);
    if (!$(this).valid()) {
        $("#user_info_div_2").show();
        $("#user_info_div_3").show();
    }
});

我也尝试过:

("#po_form")

这是我的表单的 ID,而不是 ("form"),但没有任何不同。

我发现,只有当表单一开始就有效时,此代码才会触发。 (警报正是我测试以确保代码正在触发的方式),这意味着只有在表单实际提交时才会触发 Submit() 函数(这是有道理的)。

我也尝试过:

$("#po_submit_button").click(function(){
    if (!$(this).valid()) {
        var testvalue = "Not Valid Form";
        alert(testvalue);
    }
});

这对单击按钮也没有影响。

我没有使用 javascript 验证,所以也许这就是 .valid() 失败的原因是因为我没有正确使用它?

表单很简单,它只在某些字段上具有“必需”属性,其中 1 个字段使用模式属性来确保状态只有 2 个字符。如果您需要的话,我可以发布表单的代码,但它的设计“简单”,但不是简单地编写(里面有很多 PHP)

如果表单无效,有没有办法让它运行一些 .show() 代码?

如果我需要阅读有关使用 javascript 验证甚至 jquery 验证的信息,我可以,但希望只使用 HTML5。我真的很喜欢 SlideToggle() ,它可以让屏幕上一次显示更少的信息(看起来更干净),但我不能让提交按钮不执行任何操作,并且用户会感到困惑,因为他们需要填写的字段不是' t 在屏幕上(当前)。

编辑:这是一个 fiddle

JSFiddle

这就是我当前代码的工作方式。 (或不工作)

我试图做到这一点,以便如果您的用户部分不可见且不完整,并且您单击订单部分中的按钮,用户部分将打开,以便用户可以看到他们的表单未提交的原因正确地。

最佳答案

据我了解这段代码。

$("#po_submit_button").click(function(){
    if (!$(this).valid()) {
        var testvalue = "Not Valid Form";
        alert(testvalue);
    }
});

需要改为

$("#po_submit_button").click(function(){
    if (!$("#po_form")[0].checkValidity()) {
        var testvalue = "Not Valid Form";
        $("#user_info_div_2").show();
    $("#user_info_div_3").show();
    }
});

因为您的“此”指的是按钮而不是表单。

您需要在表单元素上使用函数 checkValidity(),它是内置的 Javascript 函数

关于javascript - 提交时显示隐藏的 Div 但表单无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103231/

相关文章:

元素的 JavaScript appendChild 不起作用

javascript - 我可以从同一个对象 javascript 中调用私有(private)函数吗

javascript - 在链接中使用 jQuery 来添加字段

php - Symfony2 OneToMany 关系和形式

javascript - 从输入字段附加到 a.href id

PHP - 防止 F12 提交黑客攻击

javascript - 发送超过 2000 个字符的 JSON 数据

javascript - 如何使用淡入效果查看archive.org上的网站?

javascript - Google 地理编码 - 坐标未返回到输入框中

javascript - 在文本框上传递值