我必须单击两次按钮才能提交

时间:2015-04-24 09:32:11

标签: javascript php ajax

我面临远程验证问题。当我点击提交按钮而不关注文本框时,它会调用远程ajax进行验证,当我按下第二次提交按钮时,它将被提交给表单。 无法在同一次点击中使用。如果我专注于文本框并点击提交,那么它的工作正常。

$("#submit").click(function(e){

        if($('#add_sub_seva_form').valid())
        {

            if($("#hid_sub_head_id").val()==$("#hid_head_id").val()){
                $("#add_sub_seva_form .alert-danger").html("Head Name and Sub Head Name should not be same.");
                $("#add_sub_seva_form .alert-danger").show();
                $("#add_sub_seva_form .alert-danger").delay(3000).fadeOut(400);
                e.preventDefault();
                return false;
            }
            sub_length=$(".e_sub_head").length; 
            if(sub_length>0){
                for(var i=2;i<sub_length+2;i++){
                    if($("#hid_sub_head_id_"+i).val()=="")
                    {
                        $("#add_sub_seva_form .alert-danger").html("Please Enter Sub Head Name "+i);
                        $("#add_sub_seva_form .alert-danger").show();
                        $("#add_sub_seva_form .alert-danger").delay(3000).fadeOut(400);
//                        alert("Please Enter Sub Head Name "+i);
                        e.preventDefault();
                        return false;
                    }
                }
            }
            var msg=confirm('Are you Sure?');
            if(msg===true){
                $('#add_sub_seva_form').submit();
            }
            else{
                e.preventDefault();
            }
        }
        else{
            e.preventDefault();
        }

});

 $("#add_sub_seva_form").validate({

       rules:{
           seva_eng:{
               required:true,
               remote: {
                    url: "check-seva.php",
                    type: "post", data: {
                        hid_seva_eng: function() {
                            return $('#hid_seva_eng').val();
                        }
                    }
                }    
           },
           seva_guj:{
               required:true,
               remote: {
                    url: "check-seva.php",
                    type: "post", data: {
                        hid_seva_guj: function() {
                            return $('#hid_seva_guj').val();
                        }
                    }
                }
           },
           event_name:{
               required:true
           },
           head_id:{
               hid_head:true
           },
           sub_head_id:{
               hid_sub_head:true
           }
       },
       messages:{
           seva_eng:{
               required:'Please Enter Seva Name(Eng.)',
               remote:'Seva Name is already exist'
           },
           seva_guj:{
               required:'Please Enter Seva Name(Guj.)',
               remote:'Seva Name is already exist'
           },
           event_name:'Please Select Event Name'
       }
    });

2 个答案:

答案 0 :(得分:0)

我在窗口加载时做了一些临时解决方案我专注于文本框。

window.onload = function() {
    $('input[type="text"]').focus();  
};

这是一个棘手的解决方案。它不可靠。

答案 1 :(得分:0)

onfocusout将从文本框中删除焦点,并允许首次点击时提交表单。我有同样的问题并通过在我的验证中添加以下内容来解决它:

$("#myform").validate({
  onfocusout: false
});

https://jqueryvalidation.org/validate/

了解详情