jQuery:.validate()函数和Submit Once Function

时间:2011-04-25 22:27:38

标签: jquery

我有一段代码提交表单一次,以防止多个数据库插入:

        // Validates the form data
        // Running before submit, otherwise HTTP process starts and we POST
        $(".empForm").validate();
        // Setting the submit button to enabled
        $("input[type='submit']").attr("disabled", false);
        // disabling the submit button after it's been pressed atleast once
        // Prevents duplicate entries in the database
        $(".empForm").submit(function(){
            // if it's valid, lock the submit button 
            // if the form is not valid, they can complete and try again
            if($(".empForm").valid()){
              $("input[type='submit']").attr("disabled", true).val("Please wait...");
              return true;
            }// closes if
        }); //closes submit

问题是我使用jQuery的.validate()函数,当表单作为缺少字段返回时,我无法提交表单,因为它已被禁用。有什么建议?

3 个答案:

答案 0 :(得分:2)

使用提供的jQuery / Validate提交处理程序。

$(".selector").validate({
  submitHandler: function(form) {
   $("input[type='submit']").attr("disabled", true).val("Please wait...");
   form.submit();
 }
})

SubmitHandler仅在表单有效时运行,因此这可以解决您的问题。

答案 1 :(得分:0)

而不是禁用它,将其转为Readonly

Example

('#readonly').click( 
function() 
{ 
    if ($('#readonly').attr("readonly") == true) 
    { 
        $('#readonly').val(''); 
        $('#readonly').removeAttr("readonly"); 
    } 
});

针对您的具体情况:(未经测试)

$("input[type='submit']").removeAttr("readonly"); 
//or  $("input[type='submit']").attr('readonly', false) 
// disabling the submit button after it's been pressed atleast once
        // Prevents duplicate entries
        $("form").submit(function(){
          $("input[type='submit']").attr('readonly', true).val("Please wait...");
          return true;
        });

答案 2 :(得分:0)

我解决了这个问题。

$("input[type='submit']").click(function(){
    if($(".empForm").valid()==true){
     $("input[type='submit']").attr("disabled", true).val("Please wait...");}
      else{$("input[type='submit']").attr("disabled", false);}
});