문제
http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 최고의 jQuery 유효성 검사 플러그인으로 보입니다. 그래도 jQuery UI 대화 상자에서 작동하지 않는 것 같습니다.
이 코드는 대화 상자 DIV 외부에서 작동합니다.
<script type="text/javascript">
$(document).ready(function() {
$("form").validate();
$("a").bind("click", function() { alert($("form").valid()); });
});
</script>
<form method="get" action="">
<p>
Name
<input id="name" name="name" class="required" minlength="2" />
</p>
<p>
E-Mail
<input id="cemail" name="email" size="25" class="required email" />
</p>
<a href="#" id="clickTest">Click</a>
</form>
이것은 훌륭합니다. 양식을 대화 DIV로 이동하고 대화 상자를 열고 Bueno가없는 True를 반환하는 링크를 클릭합니다.
이 킬러 jquery 검증 플러그인을 사용하지 않고 사용하는 방법이 있습니까? <form>
꼬리표? 아니면이 작업을 성공적으로 수행하는 더 나은 방법이 있습니까?
해결책
다른 사람이 이것을 발견하는 경우 jQuery-UI 대화 상자가 양식에 추가되지 않으며 직전에 추가됩니다. </body>
, 검증 할 요소는 외부에 있습니다 <form></form>
부분:
이것을 해결하려면 다음과 같이 대화 할 때 대화 상자를 양식 내부로 이동하도록 지시하십시오.
$("#mydiv").dialog("open").parent().appendTo(jQuery("form:first"));
다른 팁
당신은 사용할 수 있습니다 Valitidy JQuery 플러그인
JavaScript
function validateForm(){
$.validity.start();
// Required:
$("#recipientFirstName").require();
var result = $.validity.end();
return result.valid;
}
$(document).ready(function() {
$('#dialog').dialog({
autoOpen: false,
title: 'My title',
width: 600,
modal: true,
buttons: {
"Ok": function() {
if(validateForm()) {
saveOrder();
$(".validity-tooltip").css("display", "none");
$(this).dialog("close");
}
},
"Cancel": function() {
// The following line was added to
// hide the tool-tips programmatically:
$(".validity-tooltip").css("display", "none");
$(this).dialog("close");
}
}
});
})
"myform"과 같은 ID를 양식에 제공해보십시오.
그런 다음 클릭 테스트 앵커의 Onclick 이벤트 에이 호출을 추가하십시오.
onclick = 'return ($ ( "#myform"). validate (). form ());'
문서에서 유효성 검사를하는 대신 준비.
Nick Craver Solution은 저에게 효과가 있었지만 IE7에는 완전히 작동하지 않습니다.
IE7에는 중첩 된 요소에 대해 z-index를 존중하지 않는 버그가 있습니다. 따라서 대화 상자의 상위를 양식으로 옮기면 오버레이가 대화 상자를 넘어서 사용자가 대화 상자와 상호 작용하지 못하게됩니다. IE7에 대한 수정은 오버레이의 Z -INDEX를 -1로 설정 한 다음 오버레이 요소를 복제하고 대화 상자와 마찬가지로 양식에 추가하는 것입니다. 그런 다음 대화 상자의 가까운 이벤트에서 복제 된 오버레이를 제거하십시오.IE7 Z- 인덱스 레이어링 문제
웹 사이트 레이아웃에 따라 오버레이를 움직일 수 있으며 복제 할 필요가 없습니다. 내 웹 사이트 레이아웃에 왼쪽과 오른쪽 여백이 있었기 때문에 복제해야했으며 전체 영역을 덮기 위해 오버레이가 필요했습니다. 아래는 내가 한 일의 예입니다.
var $dialog = $('#myDialog');
var $form = $dialog.parents('form:first');
$dialog.dialog({
autoOpen: false,
title: 'My Dialog',
minWidth: 450,
minHeight: 200,
modal: true,
position: ['center', 'center'],
close: function () {
// IE7 BUG: Needed to add an additional overload because of the z-index bug in IE7.
$('.ui-widget-overlay-ie7fix:first').remove();
},
buttons: dialogButtons
});
$form.prepend($dialog.parent());
$dialog.dialog('open');
if ($.browser.msie && $.browser.version.slice(0, 1) == "7") {
var $overlay = $('body .ui-widget-overlay:first');
$form.prepend($overlay.clone().addClass('ui-widget-overlay-ie7fix'));
$overlay.css('z-index', '-1');
}
고마워, 가리
이것은 관련이 있거나 관련이 없지만 이것은 내 문제와 해결책이었습니다.
대화 상자를 열었을 때 "양식"태그가 "div", 태그로 대체되었습니다.
대화 상자를 이미 열린 양식 요소에 배치했기 때문입니다 (분명히 양식 내에 양식을 가질 수는 없습니다).
내가 한 일을하지 마십시오 :)
<form>
<form>
</form>
</form>
대신 DIV 주위에 양식을 포장하려고 했습니까 (W3C 사양 양식 태그에 따라 DIV 내부에있을 수 없습니다.)
플러그인을 다시 작성하지 않으면 양식 요소 없이이 작업을 수행하는 이유는 쉽지 않습니다.
나는 함께 가기로 결정했다 이 jQuery 유효성 검사 플러그인 기존 코드에 내 자신의 플러그인을 작성하십시오.
이 질문이 오래되었음을 알고 있지만이 문제도 발견 했으므로 솔루션을 게시하고 있습니다.
JQuery Validation 플러그인을 유지하려면 (최선의 선택으로 보임) Nick Craver가 제안한 것처럼 대화 상자를 이동하고 싶지 않다면 간단히 추가 할 수 있습니다. <form>
꼬리표:
onsubmit="return false;"
이렇게하면 양식이 제출되는 것을 방지 할 수 있습니다. 특별한 상황에서 제출 해야하는 경우 필요할 때이 반품 값을 변경하십시오.
이 패치는 인기있는 jQuery.validationEngine을 참조하여 비 형식 태그를 유효성 검사 대상으로 허용합니다.
https://github.com/posabsolute/jquery-validation-engine/pull/101
이 가치를 찾으면 의견을 남겨주세요 ... 현재로서는 저자가 패치를 당기지 않을 것입니다.
최근에 HTML 양식 검증 용 플러그인을 만들었습니다. 직접 시도해 볼 수 있습니다.Prashant-ui-validator
jQuery를 사용하여 빌드하고 부트 스트랩을 지원하며이를 구성 할 수 있습니다. Int, String, Numeric, Max [Num], Min [Num], 이메일 및 가장 중요한 사용자 정의 JavaScript 유효성 검증 코드와 같은 다양한 데이터 유형을 지원합니다.
도움이되기를 바랍니다.
jQuery 1.11.2 및 jQueryValidate 1.13.1을 사용하여 ASP.NET 응용 프로그램에서 IET를 사용했습니다.
$('#lnz_NuevoLink').click(function () {
$("#lnz_AgregarDiv").dialog("open").parent().appendTo(jQuery("#aspnetForm")); //Add the dialog to the form
$("#lnz_AgregarDiv").parent().attr('style', 'z-index: 101'); //To avoid the modal
$("#lnz_AgregarDiv").dialog("option", "position", { my: "center", at: "center", of: window }); //To center the dialog
})