কোন জমা বাটনটির উপর ভিত্তি করে আমি প্যারেন্ট ফর্মটি নির্বাচন করব?


124

আমার এটিতে 3 টি ফর্মযুক্ত একটি ওয়েব পৃষ্ঠা রয়েছে। নেস্টেড নয়, একের পর এক (তারা প্রায় অভিন্ন, কেবল একটি লুকানো পরিবর্তনশীল যা ভিন্ন) কোনও ব্যবহারকারী কেবল একটি ফর্ম পূরণ করবে এবং আমি কেবল একটি জেএস স্ক্রিপ্ট সহ সমস্ত ফর্মগুলি বৈধকরণ / ইত্যাদি করতে চাই।

সুতরাং, কীভাবে, যখন কোনও ব্যবহারকারী # 1 ফর্মের জমা বোতামটি ক্লিক করেন, আমি কী আমার জেএস স্ক্রিপ্টটি কেবল ফর্ম 1 এর ক্ষেত্রগুলির সাথে ডিল করব? আমি এটি সংগ্রহ করেছি $ (এটি)। প্যারেন্টগুলির সাথে কিছু করার আছে তবে আমি এটি সম্পর্কে কী করব তা নিশ্চিত নই।

আমার বৈধতা স্ক্রিপ্ট (যা আমি অন্য কোথাও ব্যবহার করেছি, কেবলমাত্র একক ফর্ম সহ) এরকম কিছু দেখাচ্ছে:


$(document).ready(function(){
    $("#submit").click(function(){
        $(".error").hide();
        var hasError = false;

        var nameVal = $("#name").val();
        if(nameVal == '') {
            $("#name").after('Please enter your name.');
            hasError = true;
        }


        if(hasError == false) {blah blah do all the processing stuff}

সুতরাং আমার কি $ ("# নাম")। ভাল () এর সাথে $ (এই) .পিতা ('ফর্ম')। নাম.ভাল () এর মতো জিনিসগুলি প্রতিস্থাপন করতে হবে? বা এই সম্পর্কে আরও ভাল উপায় আছে?

ধন্যবাদ!

উত্তর:


190

আপনি এই ফর্মটি নির্বাচন করতে পারেন:

$("#submit").click(function(){
    var form = $(this).parents('form:first');
    ...
});

তবে, ফর্মটি নিজেই জমা দেওয়ার ইভেন্টের সাথে ইভেন্টটি সংযুক্ত করা ভাল, কারণ এটি ক্ষেত্রের একটি থেকে প্রবেশ কী টিপে দাখিল করার পরেও এটি ট্রিগার হবে:

$('form#myform1').submit(function(e){
     e.preventDefault(); //Prevent the normal submission action
     var form = this;
     // ... Handle form submission
});

ফর্মের ভিতরে ক্ষেত্রগুলি নির্বাচন করতে, ফর্মের প্রসঙ্গটি ব্যবহার করুন। উদাহরণ স্বরূপ:

$("input[name='somename']",form).val();

আপনি সমস্ত ইনপুট শিশু বাছাই করতেও ব্যবহার করতে পারেন: $ (এটি)। শিশুরা ()। ফিল্টার ("ইনপুট")
পিম জাগার

বা $ ("ইনপুট, টেক্সারিয়া, নির্বাচন করুন", ফর্ম)
ইরান গাল্পেরিন

1
আপনি কেন var form = $(this).formসাধারণ জাভাস্ক্রিপ্টের মতো ব্যবহার করতে পারবেন না : function onClick(button) { var form = button.form; } ???
ক্লো

65

ইনপুট উপাদানটির ফর্মটি কীভাবে সন্ধান করতে হবে তা অনুসন্ধান করার সময় আমি এই উত্তরটি পেয়েছি। আমি একটি নোট যুক্ত করতে চেয়েছিলাম কারণ এখন ব্যবহারের চেয়ে আরও ভাল উপায় আছে:

var form = $(this).parents('form:first');

আমি নিশ্চিত না যে এটি কখন jQuery এ যুক্ত হয়েছিল তবে নিকটতম () পদ্ধতিটি পিতামাতা () ব্যবহারের চেয়ে আরও পরিষ্কারভাবে যা প্রয়োজন তা ঠিক তা করে। নিকটতমের সাথে কোডটি এতে পরিবর্তন করা যেতে পারে:

var form = $(this).closest('form');

এটি আবিষ্কার করে এবং প্রথম উপাদানটি খুঁজে বের করে যা আপনি যা খুঁজছেন তার সাথে মেলে এবং সেখানে থামে, তাই নির্দিষ্ট করার দরকার নেই: প্রথমে।


47

ফর্মটি পেতে যে জমাটি ভিতরে রয়েছে তা কেন ঠিক নয়

this.form

ফলাফলের সবচেয়ে সহজ এবং দ্রুততম পথ।


3
জিকোরি র‍্যাপারের দরকার কেন!
redsquare

3
কারণ এটিকেও jQuery প্রশ্ন হিসাবে জিজ্ঞাসা করা হয়েছিল। এবং গৃহীত উত্তরটিও একটি jQuery অবজেক্ট হিসাবে ফেরত দেয় যদিও এটি দুর্দান্ত হবে। সমস্ত "কেন আপনি যখন এটি ছাড়া একইভাবে করতে পারেন তখন jQuery দিয়ে এটি করুন" আলাদা করে।
ফ্লু

4

আমি নিম্নলিখিত পদ্ধতিটি ব্যবহার করেছি এবং এটি আমার পক্ষে ভাল কাজ করেছে

$('#mybutton').click(function(){
        clearForm($('#mybutton').closest("form"));
    });

$('#mybutton').closest("form") আমার জন্য কৌশলটি।


3

আইলিন: না, তা নয় var nameVal = form.inputname.val();। এটা হয় ...

jQuery এ:

// you can use IDs (easier)

var nameVal =  $(form).find('#id').val();

// or use the [name=Fieldname] to search for the field

var nameVal =  $(form).find('[name=Fieldname]').val();

বা জাভাস্ক্রিপ্টে:

var nameVal = this.form.FieldName.value;

বা একটি সংমিশ্রণ:

var nameVal = $(this.form.FieldName).val();

JQuery এর সাহায্যে আপনি ফর্মের সমস্ত ইনপুটগুলি লুপ করতে পারেন:

$(form).find('input, select, textarea').each(function(){

  var name = this.name;
  // OR
  var name = $(this).attr('name');

  var value = this.value;
  // OR
  var value = $(this).val();
  ....
  });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.