2009-09-25 10 views
116

jQuery Validate의 오류 메시지 표시를 포함하여 유효성 검사를 수동으로 실행하려고합니다.jQuery 유효성 검사를 사용하여 수동으로 유효성 검사를 트리거하는 방법은 무엇입니까?

<form> 
<input id=i1> <button id=b1> 
<input id=i2> <button id=b2> 
</form> 

b1을 클릭 만 i1의 유효성을 검사해야합니다

내가 달성하기 위해 노력하고 시나리오는이 같은 형태입니다. 암탉이 b2을 클릭하면 i2 만 유효성을 검사해야합니다. 그러나 모든 필드를 게시해야합니다. 어떻게해야합니까? b1/b2에 대한 click 이벤트를 처리하고 양식의 일부분을 수동으로 확인하는 방법에 대해 생각했습니다.

+0

는 왜 수동으로 확인?이 플러그인은 전체 양식의 유효성을 검사하는 데 매우 유용하지만이 경우 더 자세하게 확인 가능한 양식을 수동으로 확인합니다. – Anatoliy

+0

내 예제에서는 그 형식이 더 크지 않습니다. 자동화하고 싶습니다. – usr

답변

136

그 라이브러리는 단일 요소에 대한 유효성 검사를 허용하는 것으로 보입니다. 그냥 버튼에 클릭 이벤트를 연결하고 다음을 시도해보십시오

$("#myform").validate().element("#i1"); 

예 여기 :

http://docs.jquery.com/Plugins/Validation/Validator/element#element

+9

이렇게하면 전체 양식의 유효성을 검사하여 1 개의 필드 만 유효하게합니다. 올바른 방법은 다음과 같습니다. http://stackoverflow.com/a/12195091/114029 –

+0

이유를 불문하고이 유효성을 검사 할 때 맞춤 오류 텍스트가 표시되지 않습니다. 방법. Durandal 대화 상자에서 실행중인 사실과 관련이있을 수 있습니다. 이 컨텍스트에서이 프레임 워크와 관련된 많은 문제가 있음 –

25

내 접근 방식은 다음과 같습니다이었다.

$('#myForm input:checkbox[name=yourChkBxName]').click(
function(e){ 
    $("#myForm").valid(); 
} 
) 
+0

My Query if ($ ('# someID) ==='2017-4-12) {$ ("# myform")} 유효성 검사() 요소 ("# i1") 유효();} else {$ –

89

또는 하나 간단하게 사용할 수 있습니다 : 지금은 단지 하나 개의 특정 체크 박스를 클릭 할 때 내 양식의 유효성을 검사 할 싶어/변경 $('#myElem').valid()

if ($('#myElem').valid()){ 
    // will also trigger unobtrusive validation only for this element if in place 
    // add your extra logic here to execute only when element is valid 
} 
+14

validate(). 요소 ("# i1"). invalid();}는 올바른 코드입니다.이 메서드를 사용하여 검사하기 전에 validate()를 호출해야합니다. – GETah

+0

다음과 같은 쿼리가 있습니다. $ ('# myElem') .val() == '2017-4-12') {날짜 선택 오류 } else {유효한 선택} –

0

내가 그것을 @Anastasiosyal 내가 공유 할 TNX 일 시도 이 스레드에서.

필드를 비울 때 입력 필드가 트리거되지 않은 방법에 긍정적이지 않습니다. 하지만 사용하여 개별적으로 필요한 필드를 트리거 관리 :

$(".setting-p input").bind("change", function() { 
     //Seven.NetOps.validateSettings(Seven.NetOps.saveSettings); 
     /*$.validator.unobtrusive.parse($('#saveForm'));*/ 
     $('#NodeZoomLevel').valid(); 
     $('#ZoomLevel').valid(); 
     $('#CenterLatitude').valid(); 
     $('#CenterLongitude').valid(); 
     $('#NodeIconSize').valid(); 
     $('#SaveDashboard').valid(); 
     $('#AutoRefresh').valid(); 
    }); 

여기 내보기

@using (Html.BeginForm("SaveSettings", "Settings", FormMethod.Post, new {id = "saveForm"})) 
{ 
    <div id="sevenRightBody"> 
     <div id="mapMenuitemPanel" class="setingsPanelStyle" style="display: block;"> 
      <div class="defaultpanelTitleStyle">Map Settings</div> 
      Customize the map view upon initial navigation to the map view page. 
      <p class="setting-p">@Html.LabelFor(x => x.NodeZoomLevel)</p> 
      <p class="setting-p">@Html.EditorFor(x => x.NodeZoomLevel) @Html.ValidationMessageFor(x => x.NodeZoomLevel)</p> 
      <p class="setting-p">@Html.LabelFor(x => x.ZoomLevel)</p> 
      <p class="setting-p">@Html.EditorFor(x => x.ZoomLevel) @Html.ValidationMessageFor(x => x.ZoomLevel)</p> 
      <p class="setting-p">@Html.LabelFor(x => x.CenterLatitude)</p> 
      <p class="setting-p">@Html.EditorFor(x => x.CenterLatitude) @Html.ValidationMessageFor(x => x.CenterLatitude)</p> 
      <p class="setting-p">@Html.LabelFor(x => x.CenterLongitude)</p> 
      <p class="setting-p">@Html.EditorFor(x => x.CenterLongitude) @Html.ValidationMessageFor(x => x.CenterLongitude)</p> 
      <p class="setting-p">@Html.LabelFor(x => x.NodeIconSize)</p> 
      <p class="setting-p">@Html.SliderSelectFor(x => x.NodeIconSize) @Html.ValidationMessageFor(x => x.NodeIconSize)</p> 
     </div> 

내 기업의

public class UserSetting : IEquatable<UserSetting> 
    { 
     [Required(ErrorMessage = "Missing Node Zoom Level.")] 
     [Range(200, 10000000, ErrorMessage = "Node Zoom Level must be between {1} and {2}.")] 
     [DefaultValue(100000)] 
     [Display(Name = "Node Zoom Level")] 
     public double NodeZoomLevel { get; set; } 

     [Required(ErrorMessage = "Missing Zoom Level.")] 
     [Range(200, 10000000, ErrorMessage = "Zoom Level must be between {1} and {2}.")] 
     [DefaultValue(1000000)] 
     [Display(Name = "Zoom Level")] 
     public double ZoomLevel { get; set; } 

     [Range(-90, 90, ErrorMessage = "Latitude degrees must be between {1} and {2}.")] 
     [Required(ErrorMessage = "Missing Latitude.")] 
     [DefaultValue(-200)] 
     [Display(Name = "Latitude")] 
     public double CenterLatitude { get; set; } 

     [Range(-180, 180, ErrorMessage = "Longitude degrees must be between {1} and {2}.")] 
     [Required(ErrorMessage = "Missing Longitude.")] 
     [DefaultValue(-200)] 
     [Display(Name = "Longitude")] 
     public double CenterLongitude { get; set; } 

     [Display(Name = "Save Dashboard")] 
     public bool SaveDashboard { get; set; } 
..... 
} 
+3

이 답변은 .Net 환경에서 질문은 명시 적으로 jQuery 유효성 검사에 관한 것입니다. –

1

버전으로 문서화되지 않은 방법이 있습니다 1.14

validator.checkForm() 

이 메소드는 true 또는 false 반환에 대해 자동으로 유효성을 검사합니다. 오류 메시지를 트리거하지 않습니다. 폼에 매개 변수 validate()를 사용하여 수동으로 이후 양식의 한 필드를 확인하려면

+8

문서화되지 않음 = 언제든지 중단 될 수 있습니다. – usr

0

좋은 방법이 있습니다 :

var validationManager = $('.myForm').validate(myParameters); 
... 
validationManager.element($(this)); 

문서 : 내 비슷한 경우 Validator.element()

0

, I 내 자신의 유효성 검사 논리를 가지고 그냥 jQuery 유효성 검사를 사용하여 메시지를 표시하고 싶었습니다. 이것은 내가 한 일이다.

//1) Enable jQuery validation 
 
var validator = $('#myForm').validate(); 
 

 
$('#myButton').click(function(){ 
 
    //my own validation logic here 
 
    //..... 
 
    //2) when validation failed, show the error message manually 
 
    validator.showErrors({ 
 
    'myField': 'my custom error message' 
 
    }); 
 
});

관련 문제