Javascript 创建循环js/删除可能存在的错误列表

Javascript 创建循环js/删除可能存在的错误列表,javascript,jquery,django,email,Javascript,Jquery,Django,Email,我想知道如何创建一个循环,允许我选择我希望动作发生的形式,对于所选的形式,允许我显示警报的函数将出现,而不是其他形式 如果在离开字段时电子邮件不正确,我的功能旨在显示错误。我设法用idid\u st-courriel在我的第一个表单上显示错误,但第二个表单没有,因为我不知道如何在这两个表单之间选择循环 电子邮件id的第二个字段id\u em-courriel 我的问题是,当我离开字段的电子邮件,我回到那里拉菲给我第二行相同的错误,然后我将能够使消失这一行,如果这个错误已经存在。这是我的js &l

我想知道如何创建一个循环,允许我选择我希望动作发生的形式,对于所选的形式,允许我显示警报的函数将出现,而不是其他形式

如果在离开字段时电子邮件不正确,我的功能旨在显示错误。我设法用id
id\u st-courriel
在我的第一个表单上显示错误,但第二个表单没有,因为我不知道如何在这两个表单之间选择循环 电子邮件id的第二个字段
id\u em-courriel

我的问题是,当我离开字段的电子邮件,我回到那里拉菲给我第二行相同的错误,然后我将能够使消失这一行,如果这个错误已经存在。这是我的js

<script type="text/javascript" src="../static/js/jquery-1.12.0.min.js"></script>
<script type="text/javascript" src="../static/js/jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $("input#id_st-courriel").focusout(checkEmailField);
    });

    function checkEmailField() {    
        $fieldValue = $("input#id_st-courriel").val();
        $.ajax({
            url: '/ajax/checkEmailField',
            data: ({
                value: $fieldValue
            }),
            type: 'GET',
            success: function($data, $textStatus, $XMLHttpRequest) {
                if ($data != '') {
                    $("input#id_st-courriel").parent().prev('errorlist').remove();
                    $("input#id_st-courriel").parent().before($data);
                }
            }
        })
    }
</script>

$(文档).ready(函数(){
$(“输入#id_st-courriel”).focusout(checkEmailField);
});
函数checkEmailField(){
$fieldValue=$(“输入#id_st-courriel”).val();
$.ajax({
url:“/ajax/checkEmailField”,
数据:({
值:$fieldValue
}),
键入:“GET”,
成功:函数($data、$textStatus、$XMLHttpRequest){
如果($data!=''){
$(“input#id_st-courriel”).parent().prev('errorlist').remove();
$($data)之前的$($input#id_st-courriel”).parent();
}
}
})
}
这是我的观点

def ajax\u check\u email\u字段(请求):
form=LoginForm(request.POST)
HTML_to_return=''
如果request.GET中有“value”:
field=forms.EmailField()
尝试:
field.clean(request.GET['value'])
例外情况除外。验证错误为ve:
HTML_to_return='
    ' 对于ve.messages中的消息: HTML_to_return+='
  • '+message+'
  • ' HTML_to_return+='
' 返回HttpResponse(HTML\u-to\u-return)
我的最后两行可能行不通。这是错误的屏幕截图:

试试下面的JS代码

 <script type="text/javascript">
     $(document).ready(function () {
      $("input#id_st-courriel").focusout(checkEmailField('id_st-courriel'));
    $("input#id_em-courriel").focusout(checkEmailField('id_em-courriel'));
     });

function checkEmailField(id) {
    $fieldValue = $("input#" + id).val();
    $.ajax({
        url: '/ajax/checkEmailField',
        data: ({
            value: $fieldValue
        }),
        type: 'GET',
        success: function ($data, $textStatus, $XMLHttpRequest) {
            if ($data != '') {
                $("input#" + id).parent().prev('errorlist').remove();
                $("input#" + id).parent().before($data);
            }
          }
      })
  }
 </script>

$(文档).ready(函数(){
$(“输入”id“st-courriel”).focusout(checkEmailField(“id”st-courriel));
$(“输入”id“em-courriel”).focusout(checkEmailField(“id”em-courriel));
});
函数checkEmailField(id){
$fieldValue=$(“输入#“+id).val();
$.ajax({
url:“/ajax/checkEmailField”,
数据:({
值:$fieldValue
}),
键入:“GET”,
成功:函数($data、$textStatus、$XMLHttpRequest){
如果($data!=''){
$(“输入”#“+id).parent().prev('errorlist').remove();
$($data)之前的$($input#“+id).parent();
}
}
})
}

我认为您假设$data应该包含一个errorlist标记,但我会仔细检查。然而,没有冒烟的枪。如果所有假设都是正确的,那么它应该是有效的。因此,请仔细检查您的假设。我已经尝试过了,但似乎该字段在2窗体上一直是必需的。我无法理解您想要说的内容。您的意思是说focusout事件未触发。然后您可以使用on,on。(“focusout”,handler)
 <script type="text/javascript">
     $(document).ready(function () {
      $("input#id_st-courriel").focusout(checkEmailField('id_st-courriel'));
    $("input#id_em-courriel").focusout(checkEmailField('id_em-courriel'));
     });

function checkEmailField(id) {
    $fieldValue = $("input#" + id).val();
    $.ajax({
        url: '/ajax/checkEmailField',
        data: ({
            value: $fieldValue
        }),
        type: 'GET',
        success: function ($data, $textStatus, $XMLHttpRequest) {
            if ($data != '') {
                $("input#" + id).parent().prev('errorlist').remove();
                $("input#" + id).parent().before($data);
            }
          }
      })
  }
 </script>