আমার একটি ফর্ম আছে যা এতে কোথাও একটি জমা বোতাম রয়েছে।
তবে আমি কোনওভাবে জমা দেওয়ার ইভেন্টটি 'ধরা' এবং এটিকে ঘটতে বাধা দিতে চাই।
আমি কি এটি করার কোন উপায় আছে?
আমি জমা বোতামটি পরিবর্তন করতে পারি না, কারণ এটি একটি কাস্টম নিয়ন্ত্রণের অংশ।
আমার একটি ফর্ম আছে যা এতে কোথাও একটি জমা বোতাম রয়েছে।
তবে আমি কোনওভাবে জমা দেওয়ার ইভেন্টটি 'ধরা' এবং এটিকে ঘটতে বাধা দিতে চাই।
আমি কি এটি করার কোন উপায় আছে?
আমি জমা বোতামটি পরিবর্তন করতে পারি না, কারণ এটি একটি কাস্টম নিয়ন্ত্রণের অংশ।
উত্তর:
অন্যান্য উত্তরগুলির মতো নয়, প্রত্যাবর্তন উত্তরের false
একটি অংশ মাত্র । রিটার্ন স্টেটমেন্টের আগে একটি জেএস ত্রুটি ঘটেছিল সেই দৃশ্যটি বিবেচনা করুন ...
এইচটিএমএল
<form onsubmit="return mySubmitFunction(event)">
...
</form>
লিপি
function mySubmitFunction()
{
someBug()
return false;
}
false
এখানে প্রত্যাবর্তন কার্যকর করা হবে না এবং ফর্ম যে কোনও উপায়ে জমা দেওয়া হবে। preventDefault
এজ্যাক্স ফর্ম জমা দেওয়ার জন্য আপনার ডিফল্ট ফর্ম ক্রিয়াকে আটকাতেও কল করতে হবে।
function mySubmitFunction(e) {
e.preventDefault();
someBug();
return false;
}
এই ক্ষেত্রে, বাগ সহ ফর্মটি জমা দেবে না!
বিকল্পভাবে, একটি try...catch
ব্লক ব্যবহার করা যেতে পারে।
function mySubmit(e) {
e.preventDefault();
try {
someBug();
} catch (e) {
throw new Error(e.message);
}
return false;
}
false
সরাসরি থেকে ফিরে আসবেন না onsumbit
?
(<form onsubmit="return mySubmitFunction(evt)">)
.তাহলে এটি অনির্ধারিত ত্রুটি দেয়।
আপনি এর onsubmit
মতো ইনলাইন ইভেন্টটি ব্যবহার করতে পারেন
<form onsubmit="alert('stop submit'); return false;" >
অথবা
<script>
function toSubmit(){
alert('I will not submit');
return false;
}
</script>
<form onsubmit="return toSubmit();" >
এখন, বড় প্রকল্পগুলি তৈরি করার সময় এটি ভাল ধারণা হতে পারে না। আপনার ইভেন্ট শ্রোতাদের ব্যবহারের প্রয়োজন হতে পারে।
দয়া করে সম্বন্ধে আরও পড়তে বনাম ইভেন্ট শ্রোতাদের (addEventListener এবং ইন্টারনেট এর attachEvent) ইনলাইন ঘটনাবলী এখানে । ক্রিস বেকারের চেয়ে আমি এর চেয়ে বেশি ব্যাখ্যা করতে পারি না ।
উভয়ই সঠিক, তবে সেগুলির মধ্যে কোনওটিই "প্রতি সেরা" নয় এবং বিকাশকারী উভয় পন্থা ব্যবহার করতে পছন্দ করেছেন এমন কোনও কারণ থাকতে পারে।
<form onsubmit="return false;" >
আমার জন্য কাজ করে না।
ব্যবহার করে ফর্মটিতে একটি ইভেন্ট শ্রোতাদের সংযুক্ত করুন .addEventListener()
এবং তারপরে .preventDefault()
পদ্ধতিটিতে কল করুন event
:
const element = document.querySelector('form');
element.addEventListener('submit', event => {
event.preventDefault();
// actual logic, e.g. validate the form
console.log('Form submission cancelled.');
});
<form>
<button type="submit">Submit</button>
</form>
আমার মনে submit
হয় onsubmit
বৈশিষ্ট্যের সাথে ইভেন্ট হ্যান্ডলারটি ইনলাইন সংজ্ঞায়নের চেয়ে এটি আরও ভাল সমাধান কারণ এটি ওয়েবপৃষ্ঠার যুক্তি এবং কাঠামোকে পৃথক করে। এমন একটি প্রকল্প বজায় রাখা অনেক সহজ যেখানে যুক্তি এইচটিএমএল থেকে পৃথক করা হয়। দেখুন: স্ববিরোধী জাভাস্ক্রিপ্ট ।
DOM অবজেক্টের .onsubmit
সম্পত্তি ব্যবহার করা form
ভাল ধারণা নয় কারণ এটি আপনাকে একটি উপাদানকে একাধিক জমা কলব্যাক সংযুক্তি থেকে বিরত রাখে। অ্যাডএভেন্টলিস্টনার বনাম অনক্লিক
দেখুন ।
$("button").click(function(e) { e.preventDefault() });
আর একবার চেষ্টা কর...
এইচটিএমএল কোড
<form class="submit">
<input type="text" name="text1"/>
<input type="text" name="text2"/>
<input type="submit" name="Submit" value="submit"/>
</form>
jQuery কোড
$(function(){
$('.submit').on('submit', function(event){
event.preventDefault();
alert("Form Submission stopped.");
});
});
অথবা
$(function(){
$('.submit').on('submit', function(event){
event.preventDefault();
event.stopPropagation();
alert("Form Submission prevented / stopped.");
});
});
stopPropagation
আমার ক্ষেত্রে এটিই কাজ করেছিল। ধন্যবাদ! :)
নিম্নলিখিতটি এখন পর্যন্ত কাজ করে (ক্রোম এবং ফায়ারফক্সে পরীক্ষিত):
<form onsubmit="event.preventDefault(); return validateMyForm();">
যেখানে বৈধতা মাইফর্ম () হল এমন একটি ফাংশন যা false
বৈধতা ব্যর্থ হলে ফিরে আসে । মূল বিষয়টি হল নামটি ব্যবহার করা event
। আমরা যেমন ব্যবহার করতে পারি নাe.preventDefault()
var form = document.getElementById("idOfForm");
form.onsubmit = function() {
return false;
}
.onsubmit
করা একটি খারাপ ধারণা কারণ এটি submit
আপনাকে এক উপাদানে একাধিক কলব্যাক সংযুক্তি থেকে বিরত রাখে। আমি ব্যবহার করার পরামর্শ দিচ্ছি .addEventListener()
।
আপত্তিজনক জাভাস্ক্রিপ্ট প্রোগ্রামিং কনভেনশনগুলি অনুসরণ করতে এবং DOM কত দ্রুত লোড হবে তার উপর নির্ভর করে নিম্নলিখিতটি ব্যবহার করা ভাল ধারণা হতে পারে:
<form onsubmit="return false;"></form>
তারপরে আপনি কোনও লাইব্রেরি ব্যবহার করছেন তবে লোড বা ডিওএম প্রস্তুত ব্যবহার করে ইভেন্টগুলি ওয়্যার আপ করুন।
$(function() {
var $form = $('#my-form');
$form.removeAttr('onsubmit');
$form.submit(function(ev) {
// quick validation example...
$form.children('input[type="text"]').each(function(){
if($(this).val().length == 0) {
alert('You are missing a field');
ev.preventDefault();
}
});
});
});
label {
display: block;
}
#my-form > input[type="text"] {
background: cyan;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="my-form" action="http://google.com" method="GET" onsubmit="return false;">
<label>Your first name</label>
<input type="text" name="first-name"/>
<label>Your last name</label>
<input type="text" name="last-name" /> <br />
<input type="submit" />
</form>
এছাড়াও, আমি সর্বদা action
বৈশিষ্ট্যটি ব্যবহার করব কারণ কিছু লোকের নোস্ক্রিপ্টের মতো কিছু প্লাগইন চলতে পারে যা তারপরে যাচাইকরণটি ভেঙে দেয়। আপনি যদি ক্রিয়া বৈশিষ্ট্যটি ব্যবহার করে থাকেন তবে খুব কমপক্ষে আপনার ব্যবহারকারী ব্যাকএন্ড বৈধতার ভিত্তিতে সার্ভার দ্বারা পুনঃনির্দেশিত হবে। window.location
অন্যদিকে আপনি যদি এমন কিছু ব্যবহার করেন তবে জিনিসগুলি খারাপ হবে be
ফর্ম জমা দিতে বাধা দেওয়ার জন্য আপনার কেবল এটি করা দরকার।
<form onsubmit="event.preventDefault()">
.....
</form>
উপরের কোড ব্যবহার করে এটি আপনার ফর্ম জমা দেওয়া আটকাবে।
এখানে আমার উত্তর:
<form onsubmit="event.preventDefault();searchOrder(event);">
...
</form>
<script>
const searchOrder = e => {
e.preventDefault();
const name = e.target.name.value;
renderSearching();
return false;
}
</script>
আমি যোগ event.preventDefault();
উপর onsubmit
এবং এটি কাজ করে।
আপনি ফর্মটিতে ইভেন্টলিস্টার যুক্ত করতে পারেন এবং এটি ফর্ম ডেটাটিকে preventDefault()
JSON এ নীচে রূপান্তর করতে পারেন:
const formToJSON = elements => [].reduce.call(elements, (data, element) => {
data[element.name] = element.value;
return data;
}, {});
const handleFormSubmit = event => {
event.preventDefault();
const data = formToJSON(form.elements);
console.log(data);
// const odata = JSON.stringify(data, null, " ");
const jdata = JSON.stringify(data);
console.log(jdata);
(async () => {
const rawResponse = await fetch('/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: jdata
});
const content = await rawResponse.json();
console.log(content);
})();
};
const form = document.forms['myForm'];
form.addEventListener('submit', handleFormSubmit);
<form id="myForm" action="/" method="post" accept-charset="utf-8">
<label>Checkbox:
<input type="checkbox" name="checkbox" value="on">
</label><br /><br />
<label>Number:
<input name="number" type="number" value="123" />
</label><br /><br />
<label>Password:
<input name="password" type="password" />
</label>
<br /><br />
<label for="radio">Type:
<label for="a">A
<input type="radio" name="radio" id="a" value="a" />
</label>
<label for="b">B
<input type="radio" name="radio" id="b" value="b" checked />
</label>
<label for="c">C
<input type="radio" name="radio" id="c" value="c" />
</label>
</label>
<br /><br />
<label>Textarea:
<textarea name="text_area" rows="10" cols="50">Write something here.</textarea>
</label>
<br /><br />
<label>Select:
<select name="select">
<option value="a">Value A</option>
<option value="b" selected>Value B</option>
<option value="c">Value C</option>
</select>
</label>
<br /><br />
<label>Submit:
<input type="submit" value="Login">
</label>
<br /><br />
</form>