我正在使用包含3个部分的表单,登录,忘记密码和注册。初始视图是登录表单,但可以更改为忘记密码或注册表单,它使用JS替换初始视图。
如果不符合验证,我希望回发到页面。这似乎工作正常,该领域重新填充自己。但是,在回发时我无法获得正确的加载形式。
例如,如果用户填写了忘记密码表单并填写了无效的电子邮件地址,则表单顶部的消息将是正确的,但是显示的表单是默认登录表单。一旦用户点击忘记密码按钮,JS就会将其踢到忘记密码表单,并重新填充用户无效的电子邮件地址。每个表单都有一个唯一的“form_type”隐藏变量来区分这三个,所以我可以使用它来检查然后加载正确的。理想情况下,我希望将其保留为1页,如果可能,使用JS在三者之间进行交换。
我不知道如何在回发后加载正确的表单。它使用以下代码在表单之间进行更改。如何在回发时链接到正确的表单。
<a href="javascript:;" id="forget-password">
<a href="javascript:;" id="register-btn">
我根本不擅长JS,我认为这是个问题。前端和JS都是由第三方创建的,它是“Metronic”主题。如果我需要包含任何JS,请告诉我。如果它有所不同,虽然逻辑应该是相同的,我也使用codeigniter。
编辑表格之间交换的所有功能都在那里,我只需要将其POST回正确的表格。这就是我到目前为止,如果你点击忘记密码并输入一个超过5个字符的电子邮件地址,你会明白我的意思。我显然没有问过这个问题......
一旦用户提交,并且表单被回发并出现错误,我需要弹出正确的表单,而不是页面的默认值。上面的标签是用于在不同表单之间交换的链接。
答案 0 :(得分:2)
可能是你可以尝试回发查看也带来一个额外的变量说'show_form'
在show_form中你有形式id并基于它做jquery hide / show方法
喜欢$('#' + show_form).show()
和其他2隐藏。
你可以试试这个。
答案 1 :(得分:0)
我不确定我到底知道你在问什么。 你需要在同一页面上有3个表格,并用JS交换它们吗?
如果是这样,请为每个表单提供一个唯一的ID,并且有两个表单,其中display:none。那么你所要做的就是(假设你不想使用jQuery)只是为了改变风格。
HTML:
<form id="first_form" class="form-visible">
...
</form>
<form id="second_form" class="form-gone">
...
</form>
<form id="third_form" class="form-gone">
...
</form>
CSS:
.form-visible
{
display: inline;
}
.form-visible
{
display: none;
}
JS:
function swapForms(id)
{
Swap-between-forms
}
答案 2 :(得分:0)
将表单与某个变量区分开来。例如,在提交表单之后,您可以在变量名称中回发错误,如果提交的表单被忘记密码意味着定义变量名称是$忘记的那样。在视图文件中检查if(isset($ forgot))然后将其设置为显示块。