如果表单已验证,则替换/隐藏输入按钮(使用 jquery.validate.js)

Posted

技术标签:

【中文标题】如果表单已验证,则替换/隐藏输入按钮(使用 jquery.validate.js)【英文标题】:Replace/Hide Input Button If Form Is Validated (Using jquery.validate.js) 【发布时间】:2015-10-10 13:18:56 【问题描述】:

我有这个范式:

<form class="vform" action='http://example.com/someaction.php' method='post' id='myid' >
    <input type="email" name="email" id="email" class="required email " placeholder="Enter Your Email" >
    <input id="#before" type='submit' value="Submit">
</form>

我正在使用 jquery.validate.js 插件来验证表单,它工作正常。 (Link)

需要什么:成功验证表单后用户被重定向之前,有这个“暂停”(重定向时)...在此期间,用户会反复点击提交按钮。

如果表单经过验证,我如何隐藏/替换(可能使用加载 gif 或其他东西)提交按钮。

表示、禁用或用其他东西替换输入按钮如果表单已验证。

验证码:

<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery.validation/1.14.0/jquery.validate.js"></script>
<script>    
    $(document).ready(function() 
        $(".vform").validate();
    );
</script>

我尝试在验证函数之后添加一些替换/禁用代码,如下所示:

$(this).children('input[type=submit]').attr('disabled', 'disabled');

$('#before').replaceWith($('#after'));   

但对如何实际执行感到困惑。

谁能提供一些见解?

编辑:如果表单验证为假,则不应替换/禁用输入按钮

【问题讨论】:

【参考方案1】:

你可以submitHandler的jQuery验证。

<script>    
$(document).ready(function() 
$(".vform").validate(
     submitHandler: function(form)  // <- pass 'form' argument in
            $("#before").attr("disabled", true);
            form.submit(); // <- use 'form' argument here.
        
);
);
</script>

【讨论】:

您好 Nishant,感谢您的快速响应。我正在尝试您的代码,但是在单击输入按钮(成功)时,它会“冻结”一段时间(处于按下状态),然后提交代码。 (另外,请注意:整个小提琴页面冻结!:S)请检查我创建的这个示例小提琴:jsfiddle.net/amodoke/2hgnZ/614 @Amod 我已经编辑了我的答案。现在它应该可以正常工作了。可以通过jsfiddle.net/2hgnZ/615 访问更新的小提琴 @Amod 如果此答案解决了您的问题,请接受答案。

以上是关于如果表单已验证,则替换/隐藏输入按钮(使用 jquery.validate.js)的主要内容,如果未能解决你的问题,请参考以下文章

角度 2,如果输入了至少一个输入,则验证表单

如果模态关闭并重新打开或验证捕获丢失的输入,则使用 .one 提交的模态表单提交多个

表单验证

javascript中的单选按钮验证

使用单选按钮显示/隐藏 div 的多种重力形式验证

当单击带有验证的确定按钮时,引导 vue 模式不隐藏