2012-06-22 2 views
6

양식을 제출하기 전에 양식의 특정 필드에서 몇 가지 추가 검사 및 서식을 지정하려고합니다. 따라서 bassistance jquery 유효성 검사 플러그인을 사용했습니다. 그것은 모든 manadatory 오류 메시지를 제대로 표시로 잘 작동하지만, 내가 필요한 값을 제공하자마자, 양식은 단순히 제출합니다. 이 시점에서 나는 심지어 submitHandler이 실행되는지조차 확신하지 못한다. 어떤 아이디어?Jquery 유효성 검사, submithandler가 작동하지 않습니다.

양식 HTML은 : http://jsfiddle.net/7PAZU/

$(function() { 
    $("#commentForm").validate({ 
     rules: { 
      bill_first_name: { 
       required: true 
      }, 
      bill_last_name: { 
       required: true 
      }, 
      email: { 
       required: true, 
       email: true 
      }, 
      Phone: { 
       required: true, 
       number: true 
      }, 

      bill_address_one: { 
       required: true 
      }, 
      bill_city: { 
       required: true 
      }, 
      bill_state_or_province: { 
       required: true 
      }, 
      charge_total: { 
       required: true, 
       float: true 
      }, 
     }, 
     messages: { 
      bill_first_name: { 
       required: "Please put in First Name" 
      }, 
      bill_last_name: { 
       required: "Please put in last Name" 
      }, 
      email: { 
       required: "Please enter a valid email" 
      }, 
      phone: { 
       required: "Please enter a valid Phone Number" 

      }, 

      bill_address_one: { 
       required: "Please put in Address" 
      }, 
      bill_city: { 
       required: "Please put in City" 
      }, 
      bill_state_or_province: { 
       required: "Please put in state" 
      }, 
      charge_total: { 
       required: "Please put Amount In Whole number such as 10.00", 
       number: "Please put in Amount In Whole number such as 10.00" 
      }, 
     }, 
     submitHandler: function(frm) { 
      $("#charge_total").val(parseFloat($("#charge_total").val()).toFixed(2)); 
      alert("Dukhche Na"); 
      return false; 
     } 
    }); 
})​ 
+0

자바 스크립트 콘솔에서 양식 제출시 오류를보고합니까? – fcalderan

+0

시작을 위해 쉼표가 추가로 필요합니다. IE에서 문제가 발생할 수 있습니다. – ManseUK

+0

방화범이 끌리지 않으며 전혀 사용하지 않습니다. – user734081

답변

8

그 존재하지 않는다.

charge_total: { 
       required: true, 
       float: true // there's no validator named `float` 
      } // Comma removed here 

해당 플러그인에 float이라는 유효성 검사기가 없습니다. 그것을 제거하면 잘 작동합니다. 원할 경우 사용자 지정 float 유효성 검사기를 만들 수 있습니다. 여기에 해당 규칙의

Working Fiddle

목록을 확인합니다 http://docs.jquery.com/Plugins/Validation#Validator

어떻게이 되었습니까?

나는 콘솔을 확인하고이 오류가 플러그인 소스 파일 내에서 다음 줄에서

Uncaught TypeError: Cannot call method 'call' of undefined 

을 던져지지 발견 $.validator.methods[method] 당신이 검사기를 사용하고 있음을 증명하는 정의되지 않은 의미

var result = $.validator.methods[method] 
     .call(this, element.value.replace(/\r/g, ""), element, rule.parameters); 

그 존재하지 않는다.

그래서 유효한 유효성 검사 방법 목록과 your rules을 확인했는데 사용할 수없는 float 규칙을 사용하고있는 것으로 나타났습니다.

그래서 JS는이 오류를 던지고 실행을 중지하므로 submit handler이 호출되지 않고 양식이 제출되고 있습니다 (JS을 사용하지 않는 한 기본 동작은 무엇입니까?).

+0

고맙습니다. – user734081

2

IE는 ... 시작을 위해 그들을 제거 여분의 쉼표 특히 까다 롭고입니다 :

당신은 유효성 검사 규칙을 사용하고 있기 때문에 귀하의 코드가 실패
$(function() { 
    $("#commentForm").validate({ 
     rules: { 
      bill_first_name: { 
       required: true 
      }, 
      bill_last_name: { 
       required: true 
      }, 
      email: { 
       required: true, 
       email: true 
      }, 
      Phone: { 
       required: true, 
       number: true 
      }, 

      bill_address_one: { 
       required: true 
      }, 
      bill_city: { 
       required: true 
      }, 
      bill_state_or_province: { 
       required: true 
      }, 
      charge_total: { 
       required: true, 
       float: true 
      } // Comma removed here 
     }, 
     messages: { 
      bill_first_name: { 
       required: "Please put in First Name" 
      }, 
      bill_last_name: { 
       required: "Please put in last Name" 
      }, 
      email: { 
       required: "Please enter a valid email" 
      }, 
      phone: { 
       required: "Please enter a valid Phone Number" 

      }, 

      bill_address_one: { 
       required: "Please put in Address" 
      }, 
      bill_city: { 
       required: "Please put in City" 
      }, 
      bill_state_or_province: { 
       required: "Please put in state" 
      }, 
      charge_total: { 
       required: "Please put Amount In Whole number such as 10.00", 
       number: "Please put in Amount In Whole number such as 10.00" 
      } // Comma removed here 
     }, 
     submitHandler: function(frm) { 
      $("#charge_total").val(parseFloat($("#charge_total").val()).toFixed(2)); 
      alert("Dukhche Na"); 
      return false; 
     } 
    }); 
})​ 
+0

+1 대부분의 쉼표는 오류가 될 것입니다 ... 나는이 sitn 여러 번에 직면했다 – coolguy

+0

나는 동일한 문제를 제거하고 여전히 시도했습니다 – user734081

+0

@ user734081 질문에'form' html을 포함시킬 수 있습니까? 그것은'commentForm'의 ID를 가지고 있습니까? – ManseUK

관련 문제