表单提交后显示JavaScript警报 - Django

时间:2017-04-23 01:22:38

标签: javascript django django-forms

如果提交的表单有效,我试图显示警告 在视图中,我有一个隐藏的输入,如果表单有效,则会更改值。

我有这个JavaScript:

$( document ).ready(function() {
  if (document.registroForm.alert.value==1){
    swal("¡Bien hecho!", "El registro fue exitoso.", "success")
  }
  if (document.registroForm.alert.value==0){
    swal("¡Oops!", "Algo salió mal.", "error")
  }
});

问题是每次刷新页面时都会收到警报 我只想在用户提交表单并刷新页面时执行此操作

感谢。

问题解决了。

我所做的是在页面加载时将变量“alert”设置为None。表单提交后更改: (我在views.py上对此进行了修改)

views.py

def registroUsuario(request):
    if request.method == "POST":
        form = registroForm(request.POST or None)
        if form.is_valid():
            alert = 1
            instance = form.save(commit=False)
            instance.is_active = False
            instance.save()
        else:
            alert = 0
    else:
        alert = None
        form = registroForm()
    context = {
        "titulo": "Registrarse",
        "form": form,
        "alert": alert,
    }
    template = "micuenta/registro.html"
    return render(request, template, context)

我的.html:

<form method="POST" action=".">
[... some labels and inputs ...]
<input type="hidden" name="alert" value="{{alert}}" readonly>
</form>
<script>
$( document ).ready(function() {
  if (document.registroForm.alert.value==1){
    swal("¡Bien hecho!", "El registro fue exitoso.", "success")
  }
  if (document.registroForm.alert.value==0){
    swal("¡Oops!", "Algo salió mal.", "error")
  }
});
</script>

谢谢你。

3 个答案:

答案 0 :(得分:1)

我过去曾经使用过这样的东西。

$( document ).ready(function() {
    $('#your-form').on('submit', function(e) {
        e.preventDefault();
          if (document.registroForm.alert.value==1){
                swal("¡Bien hecho!", "El registro fue exitoso.", "success");
                return true;

          } else if (document.registroForm.alert.value==0){
                swal("¡Oops!", "Algo salió mal.", "error")

          }
    });
});

但是你完成它,我相信你需要一个事件监听器来提交表单并默认禁用回发。然后,您可以执行有效提交的检查。

答案 1 :(得分:0)

您可以使用标志变量来控制它。您通过URL传递变量。

在您的按钮中:

<button type="button" onclick="myFunction(1)">Submit</button>

在同一页的脚本中:

<script type="text/javascript">
   function myFunction(value){
        window.location = "page.html?myVariabel="+value;
   }
</script>

在页面中,您要检查并显示男士手册,您可以使用它:

<script type="text/javascript">
    var query = location.search.slice(1);
    var part = query.split('=');
    if(part[1] == 1){
        //Your code
    }
</script>

答案 2 :(得分:0)

我所做的是在页面加载时将变量“alert”设置为None。表单提交后更改: (我在views.py上对此进行了修改)

<强> views.py

def registroUsuario(request):
    if request.method == "POST":
        form = registroForm(request.POST or None)
        if form.is_valid():
            alert = 1
            instance = form.save(commit=False)
            instance.is_active = False
            instance.save()
        else:
            alert = 0
    else:
        alert = None
        form = registroForm()
    context = {
        "titulo": "Registrarse",
        "form": form,
        "alert": alert,
    }
    template = "micuenta/registro.html"
    return render(request, template, context)

我的.html:

<form method="POST" action=".">
[... some labels and inputs ...]
<input type="hidden" name="alert" value="{{alert}}" readonly>
</form>
<script>
$( document ).ready(function() {
  if (document.registroForm.alert.value==1){
    swal("¡Bien hecho!", "El registro fue exitoso.", "success")
  }
  if (document.registroForm.alert.value==0){
    swal("¡Oops!", "Algo salió mal.", "error")
  }
});
</script>

谢谢你。