【发布时间】:2018-05-18 18:59:31
【问题描述】:
我创建了一个带有简单验证的表单 demo.php(未触摸、脏、有效/无效),例如在触摸输入时将颜色更改为黄色,在有效时将颜色更改为绿色。如果所有字段均有效,则提交按钮处于活动状态。 一切正常。 提交时转到 abc.js 文件,然后调用 ajax 进程,该进程转到 pusttoDb.php,然后进行输出,然后在 demo.php 中显示结果。 下图显示了我的表单。
如果所有字段都有效,则显示提交按钮。
提交后进入js文件,代码如下:
$(document).ready(function(){
alert('form js page');
$( "#myForm" ).on( "submit", function( event ) {
event.preventDefault(); //this will prevent the form from submitting
// var form_data = $("#myForm").serialize();
var data=$("#myForm :input").serializeArray();
$.ajax({
url: "pushtodb.php",
method: "POST",
data: data,
success: function (info) {
$("#result").html(info);
$('#myForm')[0].reset(); // to reset the data
/* $('#myForm').unbind("submit");
this.$('#myForm').form.markAsPristine();
this.$('#myForm').form.markAsUntouched();
this.$('#myForm').form.updateValueAndValidity();*/
}
});
});
});
从 pushtoDb.php 文件中,它携带成功消息,但表单不会在所有验证后重置,而是直接显示有效的提交按钮,如下图所示:
如果我们观察到上面的图像,只有数据被重置,但表单显示为有效并且提交输入也是有效的。
如何重置整个表单而不是仅重置数据/值?
提前致谢。
【问题讨论】:
-
你真的应该花一些时间来减少问题。您真的需要所有 4 列 (x2) 来提供最小的、可验证的示例吗? stackoverflow.com/help/mcve
-
为了理解目的,我保留了我的表单图像。希望你理解实际问题出在 Js 代码上,即我想在哪里重置整个表单 @P.Brian.Mackey
-
这不是我是否理解这种情况。这是关于简洁和重视那些免费帮助你的人的时间。如果你把问题减少到足够多,谁知道你甚至可以找到问题的答案?我最初的想法是在
Pristine附近,但后来我看到这个问题是多么冗长和密集,我只是把它写下来,而不是深入研究它来自己完成这项工作。 -
我可能对此有误,或者它可能不是正确的方法,但有什么理由不能重定向到带有 url 中的附加参数的同一页面。如果您重定向页面,它将再次重新加载,并且您的验证将被重置,并且由于 url 中的附加参数,您也可以显示您的成功消息。
-
使用 jQuery 不是 Angular 的方式,也就是说我认为发生的事情是这些变化发生在 Angular 环境之外。尝试调用 $scopy.digest(),强制执行摘要循环。这是SO-post
标签: javascript php jquery