jQuery বৈধকরণ প্লাগইন: নির্দিষ্ট জমা বোতামের জন্য বৈধতা অক্ষম করুন


167

আমার একাধিক ক্ষেত্রের সাথে আমার ফর্ম রয়েছে যা আমি বৈধতা দিচ্ছি (কাস্টম বৈধকরণের জন্য কিছু পদ্ধতি যুক্ত) জার্ন জায়েফিরের চমৎকার জিকুয়েরি বৈধকরণ প্লাগইন সহ। আপনি কীভাবে নির্দিষ্ট জমা নিয়ন্ত্রণগুলির সাথে বৈধতাটিকে অবরুদ্ধ করবেন (অন্য কথায়, কিছু জমা দেওয়া ইনপুটগুলির সাথে আগুনের বৈধতা, তবে অন্যের সাথে বৈধতা ফায়ার করবেন না)? এটি স্ট্যান্ডার্ড ASP.NET ভ্যালিডেটর নিয়ন্ত্রণ সহ ভ্যালিডেশন গ্রুপগুলির মতো হবে।

আমার অবস্থা:

এটি এএসপি.এনইটি ওয়েবফোর্মে রয়েছে তবে আপনি যদি চান তা এড়িয়ে যেতে পারেন। তবে, আমি বৈধতাটিকে একটি "সুপারিশ" হিসাবে আরও ব্যবহার করছি: অন্য কথায়, ফর্মটি জমা দেওয়ার সময়, বৈধতা অগ্নিকাণ্ডের পরিবর্তে "প্রয়োজনীয়" বার্তা প্রদর্শন করার পরিবর্তে, একটি "সুপারিশ" দেখায় যা "আপনার লাইনের পাশাপাশি কিছু বলেছে" নিম্নলিখিত ক্ষেত্রগুলি মিস করেছেন .... আপনি যেভাবেই এগিয়ে যেতে চান? " ত্রুটির ধারকটির সেই মুহুর্তে এখন আর একটি জমা দেওয়া বোতাম দৃশ্যমান যা চাপতে পারে যা বৈধতাটিকে উপেক্ষা করবে এবং যেভাবেই জমা দেবে। এই বোতাম নিয়ন্ত্রণ এবং ফর্ম পোস্টের জন্য কীভাবে ফর্ম।

Http://jquery.bassistance.de/ediaate/demo/m Multipart/ এ একটি বাড়ির নমুনা কিনুন এবং বিক্রয় পূর্ববর্তী লিঙ্কগুলিকে হিট করার জন্য এটির অনুমতি দেয় তবে এটি কাস্টম পদ্ধতি তৈরি করে এবং বৈধকারীকে যুক্ত করার মাধ্যমে এটি করে। আমি বৈধতা প্লাগইনে ইতিমধ্যে কাস্টম পদ্ধতিগুলি ডুপ্লিকেট কার্যকারিতা তৈরি করতে পছন্দ করব না।

নিম্নলিখিতটি অবিলম্বে প্রযোজ্য স্ক্রিপ্টের একটি সংক্ষিপ্ত সংস্করণ যা আমি এখনই পেয়েছি:

var container = $("#<%= Form.ClientID %> div.validationSuggestion");

$('#<%= Form.ClientID %>').validate({          
    errorContainer: container,
    errorLabelContainer: $("ul",container),
    rules: {
        <%= YesNo.UniqueID %>: { required: true },
        <%= ShortText.UniqueID %>: { required: true } // etc.

    },
    messages: {
        <%= YesNo.UniqueID %>: 'A message.',
        <%= ShortText.UniqueID %>: 'Another message.' // etc.
    },
    highlight: function(element, errorClass) {
        $(element).addClass(errorClass);
        $(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
        $(element.form).find("label[for=" + element.id + "]").removeClass("valid");
    },
    unhighlight: function(element, errorClass) {
        $(element).removeClass(errorClass);
        $(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
        $(element.form).find("label[for=" + element.id + "]").addClass("valid");
    },
    wrapper: 'li'
}); 

কীওয়ার্ড রিটার্ন

উত্তর:


285

cancelবৈধতা দমন করতে আপনি একটি জমা দিতে বোতামে একটি সিএসএস শ্রেণি যুক্ত করতে পারেন

যেমন

<input class="cancel" type="submit" value="Save" />

এখানে এই বৈশিষ্ট্যটির jQuery ভ্যালিডেটর ডকুমেন্টেশন দেখুন: জমা দেওয়ার সময়ে বৈধতা এড়িয়ে যাওয়া


সম্পাদনা :

উপরোক্ত কৌশলটি অবচয় ও formnovalidateগুণাবলী সহ প্রতিস্থাপন করা হয়েছে ।

<input formnovalidate="formnovalidate" type="submit" value="Save" />

1
এটি <ইনপুট /> দিয়ে কাজ করছে? আমি ক্লাস = "বাতিল" যুক্ত করেছি এবং এটি কাজ করছে না। আমি মাইক্রোসফ্ট এমভিসিভিলিডেশন সহ এমভিসি 2 ব্যবহার করছি। ধন্যবাদ.
VinnyG

4
@ ভিনিজি - মাইক্রোসফ্ট এমভিসিভিলিডেশন ব্যবহার করা হয়নি (এবং কখনই হবে না) - এটি জ্যাকুরি বৈধতার সমান নয়।
redsquare

1
ইনপুট উপাদান ছাড়াই কি একই আচরণ অর্জন করা সম্ভব? অর্থাত্ আমি কীভাবে কোনওভাবে ট্রিগার (ডকুমেন্টড উপায়ে, লেপের উত্তরের বিপরীতে) ফর্ম জমা দিতে এবং একই সাথে বৈধতা এড়িয়ে যেতে পারি?
আইভান

10
দ্রষ্টব্য: আপনি যদি গতিশীলভাবে ক্লাস বাতিল যোগ করেন, অর্থাত্ $('input[type=submit]').addClass('cancel')ক্লাসটি পৃষ্ঠা লোডে উপস্থিত থাকতে হবে তবে এটি কাজ করে না ।
lolesque

@ কেবলমাত্র আপনার সম্ভাব্যতাটিকে আবার বৈধকরণ পদ্ধতিটি কল করতে হবে যদি না তারা এই উত্তরটির তারিখ নোট করে কাজ করে না তবে)
redsquare

107

এটি করার অন্যান্য (অননুমোদিত) উপায় হল কল করা:

$("form").validate().cancelSubmit = true;

বোতামটির ক্লিক ইভেন্টে (উদাহরণস্বরূপ)।


হ্যালো @ লেপ, আপনি কীভাবে লেখার পরে jquery বৈধতা পুনরায় প্রয়োগ করতে জানেন $("form").validate().cancelSubmit = true;। আমি চেষ্টা করেছিলাম $("form").validate().cancelSubmit = false;এবং $("form").validate();আমার জমা দেওয়ার বোতামটি জমা দিতে বলছি । ধন্যবাদ
জয়ক্রাত

3
এটি $(yourForm).data('validator').cancelSubmit = false;থ্যাঙ্কস
জয়ক্র্যাট

18

আর একটি (গতিশীল) উপায়:

$("form").validate().settings.ignore = "*";

এবং এটি পুনরায় সক্ষম করতে, আমরা কেবল পূর্বনির্ধারিত মানটি সেট করে রেখেছি:

$("form").validate().settings.ignore = ":hidden";

সূত্র: https://github.com/jzaefferer/jquery- માન્ય করণ/ issues / 725# issuecomment- 17601443


16

ইনপুটটিতে ফর্মনোলোইডেট বৈশিষ্ট্য যুক্ত করুন

    <input type="submit" name="go" value="Submit"> 
    <input type="submit" formnovalidate name="cancel" value="Cancel"> 

শ্রেণি যোগ করা = "বাতিল করুন" এখন হ্রাস করা হয়েছে

এই লিঙ্কে জমা দেওয়ার জন্য বাদ দেওয়া বৈধতার জন্য ডকগুলি দেখুন


10

আপনি অনসামিট: ভুয়া বিকল্প ( ডকুমেন্টেশন দেখুন) ব্যবহার করতে পারেন যাচাইকরণের সময় ফর্ম জমা দেওয়ার ক্ষেত্রে বৈধতা দেবে না এমন ) । এবং তারপরে আপনার এসপে: বোতামটি একটি অনক্লিয়েন্টক্লিক = $ ('# এসপনেটফর্ম') যুক্ত করুন valid বৈধ (); ফর্মটি বৈধ কিনা তা স্পষ্ট করে পরীক্ষা করতে।

উপরে বর্ণিত অপ্ট-আউটের পরিবর্তে আপনি এটিকে অপ্ট-ইন মডেল বলতে পারেন।

দ্রষ্টব্য, আমি এএসপি.এনইটি ওয়েব ফোর্মগুলির সাথে jquery বৈধতাও ব্যবহার করছি। নেভিগেট করার জন্য কিছু সমস্যা রয়েছে তবে একবার আপনি এগুলি ব্যবহার করার পরে ব্যবহারকারীর অভিজ্ঞতা খুব ভাল।


3

(এর প্রসার @lepeএবং + এর @redsquareউত্তর )ASP.NET MVCjquery.validate.unobtrusive.js


JQuery বৈধতা প্লাগইন (না মাইক্রোসফট বিচক্ষণ এক) আপনি একটি লাগাতে পারবেন .cancelবাইপাস বৈধতা সম্পূর্ণভাবে (যেমন গৃহীত উত্তর দেখানো) আপনার জমা বাটনে বর্গ।

 To skip validation while still using a submit-button, add a class="cancel" to that input.

  <input type="submit" name="submit" value="Submit"/>
  <input type="submit" class="cancel" name="cancel" value="Cancel"/>

(এটি দিয়ে বিভ্রান্ত করবেন না type='reset' একে একে পুরোপুরি আলাদা কিছু )

দুর্ভাগ্যক্রমে jquery.validation.unobtrusive.jsবৈধতা হ্যান্ডলিং (ASP.NET MVC) কোড কিন্ডা jquery . লায়েড প্লাগইন এর ডিফল্ট আচরণ

.cancelউপরের চিত্রের মতো সাবমিট বাটনটি রাখার অনুমতি দেওয়ার জন্য আমি এটি নিয়ে এসেছি । মাইক্রোসফ্ট যদি কখনও 'এটি স্থির করে' তবে আপনি কেবল এই কোডটি সরিয়ে ফেলতে পারেন।

    // restore behavior of .cancel from jquery validate to allow submit button 
    // to automatically bypass all jquery validation
    $(document).on('click', 'input[type=image].cancel,input[type=submit].cancel', function (evt)
    {
        // find parent form, cancel validation and submit it
        // cancelSubmit just prevents jQuery validation from kicking in
        $(this).closest('form').data("validator").cancelSubmit = true;
        $(this).closest('form').submit();
        return false;
    });

দ্রষ্টব্য: যদি প্রথমে চেষ্টা করে দেখা যায় যে এটি কাজ করছে না - নিশ্চিত করুন যে আপনি সার্ভারে রাউন্ড্রিপিং করছেন না এবং কোনও সার্ভার ত্রুটিযুক্ত উত্পন্ন পৃষ্ঠাটি দেখছেন। আপনাকে অন্য কোনও উপায়ে সার্ভারের পক্ষে বৈধতা বাইপাস করতে হবে - এটি কেবল ত্রুটি ছাড়াই ফর্মটিকে ক্লায়েন্টের পক্ষে জমা দেওয়ার অনুমতি দেয় (বিকল্পটি .ignoreআপনার ফর্মের প্রতিটি বৈশিষ্ট্যে যুক্ত করা হবে)।

(দ্রষ্টব্য: আপনি buttonযদি বাটন জমা দেওয়ার জন্য ব্যবহার করেন তবে আপনাকে নির্বাচকটিতে যোগ করার প্রয়োজন হতে পারে )


Pay with PayPal
জঘন্যতম

এটি আমার জন্য ডিফল্ট এমভিসি 5 টেম্পলেট দিয়ে কাজ করে না। আমার কাছে ন্যুগেট প্যাকেজ রয়েছে জিকুয়ারি ১.১০.২, জিকুয়েরি বৈধকরণ ১.১১.১.১, মাইক্রোসফ্ট জিকুয়ারি আনব্রুটসিভ ভ্যালিডেশন 3.0.০.০। আমার পক্ষে কী কাজ করেছে তা আপনার কোডের দুটি লাইন এর দ্বারা প্রতিস্থাপন করছে: $(this).closest('form').data("validator", null).unbind().submit();এটি যাচাইকারীকে এটি বাতিল এবং বেঁধে রাখবে। তারপরে এটি ফর্ম জমা দেবে। আপনি এই লাইন দ্বারা বৈধতা পুনরায় সেট করতে পারেন:$.validator.unobtrusive.parse($("#YourUniqueFormId"));
রাল্ফ জানসেন

রেখা বরাবর কোথাও এই স্থির করা হয়েছিল। আমি এটি সম্পর্কে সম্পূর্ণ মন্তব্য করতে সক্ষম হয়েছি এবং এটি এখন একটি .cancelশ্রেণীর সাথে কাজ করে । দ্রষ্টব্য: আপনি বোতাম জমা একটি টাইপ = 'ইমেজ' ব্যবহার করছেন তাহলে .cancelবর্গ হবে কাজ না যদি না আপনি পরিবর্তন ":submit"করতে ":submit,:image"jQuery মূল বৈধতা প্লাগইন মধ্যে
Simon_Weaver

2
$("form").validate().settings.ignore = "*";

অথবা

$("form").validate().cancelSubmit = true;

কিন্তু একটি কাস্টম প্রয়োজনীয় বৈধকারীর সাফল্য ছাড়া। ডায়নামিকভাবে সাবমিট কল করার জন্য, আমি এই কোড সহ একটি জাল লুকানো সাবমিট বাটন তৈরি করেছি:

var btn = form.children('input.cancel.fakeSubmitFormButton');
if (btn.length === 0) {
    btn = $('<input name="FakeCancelSubmitButton" class="cancel fakeSubmitFormButton hide" type="submit" formnovalidate value="FakeCancelSubmitButton" />');
    form.append(btn);
}
btn.click();

এখন যাচাই সঠিকভাবে এড়িয়ে যান :)


আপনি যদি কেবল কোনও নির্দিষ্ট শ্রেণিকে বৈধতা থেকে বাদ দিতে চান, আপনি একটি নক্ষত্রের পরিবর্তে এটি ব্যবহার করতে পারেন। $("form").validate().settings.ignore = "class-name";
জেমস পোলুস

1

এই প্রশ্নটি পুরানো, তবে এর চারপাশে আমি আরও একটি উপায় খুঁজে পেয়েছি এটি ব্যবহার করা $('#formId')[0].submit(), যা jQuery অবজেক্টের পরিবর্তে ডোম উপাদান পায়, এভাবে কোনও বৈধতা হুককে বাইপাস করে। এই বোতামটি ইনপুট থাকা প্যারেন্ট ফর্মটি জমা দেয়।

<input type='button' value='SubmitWithoutValidation' onclick='$(this).closest('form')[0].submit()'/>

এছাড়াও, নিশ্চিত হয়ে নিন যে আপনার কাছে input"জমা" নামক কোনও নাম নেই, অথবা এটি নামের ফাংশনটিকে ওভাররাইড করে submit


1

আমি দেখতে পেয়েছি যে সর্বাধিক নমনীয় উপায় হল জিকুয়েরি ব্যবহার করা:

event.preventDefault():

উদাহরণস্বরূপ যদি জমা দেওয়ার পরিবর্তে আমি পুনর্নির্দেশ করতে চাই তবে আমি এটি করতে পারি:

$("#redirectButton").click(function( event ) {
    event.preventDefault();
    window.location.href='http://www.skip-submit.com';
});

বা আমি ডেটা অন্য শেষ পয়েন্টে প্রেরণ করতে পারি (উদাহরণস্বরূপ যদি আমি ক্রিয়াটি পরিবর্তন করতে চাই):

$("#saveButton").click(function( event ) {
    event.preventDefault();
    var postData = $('#myForm').serialize();
    var jqxhr = $.post('http://www.another-end-point.com', postData ,function() {
    }).done(function() {
        alert("Data sent!");
    }).fail(function(jqXHR, textStatus, errorThrown) {
        alert("Ooops, we have an error");
    })

একবার আপনি 'ইভেন্ট.প্রিভেন্টডিফল্ট (); আপনি বৈধতা বাইপাস।


1

আমার কাছে ফর্ম জমা দেওয়ার জন্য দুটি বোতাম রয়েছে, নাম বোতামটি সংরক্ষণ করুন এবং প্রস্থানটি বৈধতাটিকে বাইপাস করে:

$('.save_exist').on('click', function (event) {
            $('#MyformID').removeData('validator');
            $('.form-control').removeClass('error');
            $('.form-control').removeClass('required');                
            $("#loanApplication").validate().cancelSubmit = true;
            $('#loanApplication').submit();
            event.preventDefault();
});

0

এখানে সহজতম সংস্করণ, আশা করি এটি কাউকে সহায়তা করে,

$('#cancel-button').click(function() {
    var $form = $(this).closest('form');
    $form.find('*[data-validation]').attr('data-validation', null);
    $form.get(0).submit();
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.