জাভাস্ক্রিপ্ট: নির্বাচনের উপর ভিত্তি করে ফর্ম ক্রিয়া বৈশিষ্ট্যটির মান কীভাবে পরিবর্তন করবেন?


151

আমি ড্রপডাউন মেনু থেকে নির্বাচিত মানের উপর ভিত্তি করে ফর্ম ক্রিয়াটি পরিবর্তন করার চেষ্টা করছি।

মূলত, এইচটিএমএলটি দেখতে এরকম দেখাচ্ছে:

<form class="search-form" id="search-form" method="post" accept-charset="UTF-8" action="/search/user">
<select id="selectsearch" class="form-select" name="selectsearch">
<option value="people">Search people</option>
<option value="node">Search content</option>
</select>

<label>Enter your keywords: </label>
 <input type="text" class="form-text" value="" size="40" id="edit-keys" name="keys" maxlength="255" />

<input type="submit" class="form-submit" value="Search" id="edit-submit" name="search"/>
</form>

যদি "লোক" নির্বাচিত হয় (যা এটি ডিফল্টরূপে হয়), ক্রিয়াটি "/ অনুসন্ধান / ব্যবহারকারী" হওয়া উচিত এবং যদি বিষয়বস্তু নির্বাচিত হয় তবে ক্রিয়াটি "/ অনুসন্ধান / সামগ্রী" হওয়া উচিত

আমি এখনও আশেপাশে অনুসন্ধান করছি, তবে এটি কীভাবে করা যায় তা সন্ধান করতে সক্ষম হইনি।

উত্তর:


277
$("#selectsearch").change(function() {
  var action = $(this).val() == "people" ? "user" : "content";
  $("#search-form").attr("action", "/search/" + action);
});

আমি যা চেষ্টা করেছিলাম তার চেয়ে এটি বেশ ভাল ... আপনাকে ধন্যবাদ
n00b0101

1
নিখুঁত কাজ করেছেন। ধন্যবাদ। ফর্ম পরিবর্তনের পরিবর্তে জমা দেওয়ার ক্রিয়াটি পরিবর্তন করতে আমি এই কোডটি আপডেট করেছি।
রায়ান

1
আপনি যদি মোবাইল ডিভাইসগুলির জন্য ডিজাইন করেন তবে পারফরম্যান্স সমস্যার জন্য "সাবমিট করুন" পদক্ষেপটি পরিবর্তন করা ভাল। আমার উত্তর নীচে পরীক্ষা করুন।
ট্রান্সট

propপরিবর্তে ব্যবহার করুন attr। উদাহরণ =$("#search-form").prop ("action", "/search/" + action);
gsinha

25

আপনি যদি কেবল ফর্মটির ক্রিয়া পরিবর্তন করতে চান তবে আমি ইনপুট-পরিবর্তনের পরিবর্তে ফর্ম-জমা দেওয়ার ক্রিয়াকে পছন্দ করি। এটি একবারে গুলি চালায়।

$('#search-form').submit(function(){
  var formAction = $("#selectsearch").val() == "people" ? "user" : "content";
  $("#search-form").attr("action", "/search/" + formAction);
}); 

0

এটি ব্যবহার করা ভাল

$('#search-form').setAttribute('action', '/controllerName/actionName');

বরং

$('#search-form').attr('action', '/controllerName/actionName');

সুতরাং, ট্র্যান্টের উত্তরের ভিত্তিতে আমাদের কাছে রয়েছে:

$('#search-form').submit(function() {
    var formAction = $("#selectsearch").val() == "people" ? "user" : "content";
    $("#search-form").setAttribute("action", "/search/" + formAction);
}); 

ব্যবহার setAttributeআপনার সম্ভাব্য অনেক সময় সাশ্রয় করতে পারে।


কেন জুমারি setAttributeব্যবহারের কারণে ডমুলেটমেন্ট কোনও সময় বাঁচাতে পারে attr?
enorl76

0

জাভাস্কিপ্টে সহজ এবং সহজ

<script>

  document.getElementById("selectsearch").addEventListener("change", function(){

  var get_form =   document.getElementById("search-form") // get form 
  get_form.action =  '/search/' +  this.value; // assign value 

});

</script>

-16

আপনার কি একটি ফর্ম দরকার?
যদি তা না হয় তবে আপনি এটি ব্যবহার করতে পারেন:

<div>
    <input type="hidden" value="ServletParameter" />
    <input type="button" id="callJavaScriptServlet" onclick="callJavaScriptServlet()" />
</div>

নিম্নলিখিত জাভাস্ক্রিপ্ট সহ:

function callJavaScriptServlet() {
    this.form.action = "MyServlet";
    this.form.submit();
}

15
this.form.submit (); আসলে কোনও রূপ নেই বলে কোনও জ্ঞান থাকবে না - জমা দেওয়ার মতো কিছুই নেই
সেট করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.