উত্তর:
[ পুনর্বিবেচনা ২০১২, কোনও ইনলাইন হ্যান্ডলার নেই, সংরক্ষণের পাঠ্যক্রম সংরক্ষণ করুন]
function checkEnter(e){
e = e || event;
var txtArea = /textarea/i.test((e.target || e.srcElement).tagName);
return txtArea || (e.keyCode || e.which || e.charCode || 0) !== 13;
}
এখন আপনি ফর্মটিতে একটি কীপ্রেস হ্যান্ডলারটি সংজ্ঞায়িত করতে পারেন:
<ফর্ম [...] onkeypress = "চেক রিটার্ন (ইভেন্ট)">>
document.querySelector('form').onkeypress = checkEnter;
এখানে একটি jQuery হ্যান্ডলার যা জমা দেওয়া প্রবেশ বন্ধ করতে এবং ব্যাকস্পেস কী -> পিছনে থামাতে ব্যবহৃত হতে পারে। "কীসটপ" অবজেক্টের (কীকড: সিলেক্টরস্ট্রিং) জোড়া নোডগুলির সাথে মেলে যা তাদের ডিফল্ট ক্রিয়াকলাপটি নিষ্ক্রিয় করা উচিত নয়।
মনে রাখবেন যে ওয়েবটি একটি অ্যাক্সেসযোগ্য জায়গা হওয়া উচিত এবং এটি কীবোর্ড ব্যবহারকারীদের প্রত্যাশা ভঙ্গ করছে। এটি বলেছিল যে, আমার ক্ষেত্রে যে ওয়েব অ্যাপ্লিকেশনটিতে আমি কাজ করছি তা পিছনের বোতামটি যাইহোক পছন্দ করে না, সুতরাং এর কী শর্টকাটটি অক্ষম করা ঠিক is "প্রবেশ করা উচিত -> জমা দিন" আলোচনাটি গুরুত্বপূর্ণ তবে জিজ্ঞাসিত প্রকৃত প্রশ্নের সাথে সম্পর্কিত নয়।
অ্যাক্সেসযোগ্যতা এবং আপনি কেন এটি করতে চান তা সম্পর্কে চিন্তা করার জন্য এই কোডটি এখানে!
$(function(){
var keyStop = {
8: ":not(input:text, textarea, input:file, input:password)", // stop backspace = back
13: "input:text, input:password", // stop enter = submit
end: null
};
$(document).bind("keydown", function(event){
var selector = keyStop[event.which];
if(selector !== undefined && $(event.target).is(selector)) {
event.preventDefault(); //stop event
}
return true;
});
});
অনসামিত হ্যান্ডলার থেকে কেবল মিথ্যা ফিরিয়ে দিন
<form onsubmit="return false;">
বা আপনি যদি মাঝখানে কোনও হ্যান্ডলার চান
<script>
var submitHandler = function() {
// do stuff
return false;
}
</script>
<form onsubmit="return submitHandler()">
submit
বোতাম টিপে আপনার ফর্মটি জমা দিতে চান তবে এটি ভাল ধারণা নয়
<form>
জমা দেওয়া থেকে বিরত হ'ল বাথ স্নানের জল দিয়ে বাচ্চাকে বাইরে ফেলে দেওয়া ।
//Turn off submit on "Enter" key
$("form").bind("keypress", function (e) {
if (e.keyCode == 13) {
$("#btnSearch").attr('value');
//add more buttons here
return false;
}
});
e.preventDefault()
বরং return false
একই প্রান্তটি অর্জন করবে তবে ইভেন্টটিকে পিতামণ্ডলের উপাদানগুলিতে হ্যান্ডলারের কাছে পৌঁছানোর অনুমতি দিন। ডিফল্ট ক্রিয়া (ফর্ম সমীকরণ) এখনও প্রতিরোধ করা হবে
এই ফাংশনটিতে আপনাকে কল করতে হবে যার ফর্মের ডিফল্ট জমা দেওয়ার আচরণটি বাতিল করবে। আপনি এটি কোনও ইনপুট ক্ষেত্র বা ইভেন্টের সাথে সংযুক্ত করতে পারেন।
function doNothing() {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if( keyCode == 13 ) {
if(!e) var e = window.event;
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
ENTER কী কেবলমাত্র ফর্মটির ডিফল্ট জমা বোতামটি সক্রিয় করে, যা প্রথমটি হবে
<input type="submit" />
ব্রাউজারটি ফর্মের মধ্যে খুঁজে পায়।
অতএব সাবমিট বাটন নেই, তবে এর মতো কিছু something
<input type="button" value="Submit" onclick="submitform()" />
সম্পাদনা : মন্তব্যে আলোচনার জবাবে:
আপনার যদি কেবল একটি পাঠ্য ক্ষেত্র থাকে তবে এটি কাজ করে না - তবে এটি হতে পারে সেই ক্ষেত্রে এটি পছন্দসই আচরণ।
অন্য সমস্যাটি হ'ল এটি ফর্মটি জমা দেওয়ার জন্য জাভাস্ক্রিপ্টের উপর নির্ভর করে। এটি অ্যাক্সেসযোগ্যতার দৃষ্টিকোণ থেকে সমস্যা হতে পারে। এটি <input type='button'/>
জাভাস্ক্রিপ্ট সহ লেখার মাধ্যমে সমাধান করা যেতে পারে এবং তারপরে <input type='submit' />
একটি <noscript>
ট্যাগের মধ্যে রেখে put এই পদ্ধতির অপূর্ণতা জাভাস্ক্রিপ্ট-অক্ষম ব্রাউজারগুলির জন্য তারপরে ENTER এ ফর্ম জমা দিতে হবে। এক্ষেত্রে কাঙ্ক্ষিত আচরণ কী তা সিদ্ধান্ত নেওয়ার বিষয়টি ওপির উপর নির্ভর করে।
আমি জাভাস্ক্রিপ্ট মোটেও আমন্ত্রণ না করে এটি করার কোনও উপায় জানি না।
খাঁটি জাভাস্ক্রিপ্টের সংক্ষিপ্ত উত্তরটি হ'ল:
<script type="text/javascript">
window.addEventListener('keydown', function(e) {
if (e.keyIdentifier == 'U+000A' || e.keyIdentifier == 'Enter' || e.keyCode == 13) {
if (e.target.nodeName == 'INPUT' && e.target.type == 'text') {
e.preventDefault();
return false;
}
}
}, true);
</script>
এটি কেবল ইনপুট টাইপ = 'পাঠ্য' এর জন্য "এন্টার" কিপ্রেস ক্রিয়াটি অক্ষম করে। দর্শনার্থীরা এখনও পুরো ওয়েবসাইট জুড়ে "এন্টার" কী ব্যবহার করতে পারেন।
যদি আপনি অন্যান্য ক্রিয়াগুলির জন্য "এন্টার" অক্ষম করতে চান তবে আপনি কনসোল.লগ (ই) যুক্ত করতে পারেন; আপনার পরীক্ষার উদ্দেশ্যে, এবং ক্রোমে F12 চাপুন, "কনসোল" ট্যাবে যান এবং পৃষ্ঠায় "ব্যাকস্পেস" টিপুন এবং কোন মানগুলি ফিরে এসেছে তা দেখতে তার ভিতরে এটি দেখুন, তারপরে আপনি কোডটি আরও বাড়ানোর জন্য সেই সমস্ত পরামিতিগুলিকে লক্ষ্য করতে পারেন "e.target.nodeName" , "e.target.type" এবং আরও অনেক কিছুর জন্য আপনার প্রয়োজন অনুসারে উপরের ...
e.target.nodeName === 'INPUT' && e.target.type !== 'textarea'
। নির্দিষ্ট কোড সহ এটি কোনও রেডিও বা চেকবক্সকে কেন্দ্র করে ফর্মগুলি জমা দেওয়ার অনুমতি দেবে।
আমি এখানে বা অন্যান্য পোস্টে এই বিষয়ে যে সমস্ত উত্তর পেয়েছি তার মধ্যে একটি ত্রুটি রয়েছে এবং তা হ'ল এটি ফর্ম উপাদানটিতেও প্রকৃত পরিবর্তন ট্রিগারকে বাধা দেয়। সুতরাং আপনি যদি এই সমাধানগুলি চালনা করেন তবে ওনিচ ইভেন্টটিও ট্রিগার হবে না। এই সমস্যাটি কাটিয়ে উঠতে আমি এই কোডগুলি সংশোধন করেছি এবং নিজের জন্য নিম্নলিখিত কোডগুলি বিকাশ করেছি। আমি আশা করি এটি অন্যের জন্য দরকারী হয়ে উঠবে। আমি আমার ফর্ম "প্রতিরোধ_আউট_সাম্বিত" এ একটি ক্লাস দিয়েছি এবং নিম্নলিখিত জাভাস্ক্রিপ্ট যুক্ত করেছি:
$(document).ready(function()
{
$('form.prevent_auto_submit input,form.prevent_auto_submit select').keypress(function(event)
{
if (event.keyCode == 13)
{
event.preventDefault();
$(this).trigger("change");
}
});
});
আমি সর্বদা পূর্বের মতো কিপ্রেস হ্যান্ডলারটি দিয়ে সর্বদা এটি করেছি তবে আজ একটি সহজ সমাধানের জন্য চাপিয়েছি। এন্টার কীটি কেবল ফর্মটিতে প্রথম অ-অক্ষম জমা দেওয়ার বোতামটি ট্রিগার করে, তাই আসলে যা যা প্রয়োজন তা হল সেই বোতামটি জমা দেওয়ার চেষ্টা করে বাধা দেওয়া:
<form>
<div style="display: none;">
<input type="submit" name="prevent-enter-submit" onclick="return false;">
</div>
<!-- rest of your form markup -->
</form>
এটাই. কী-চাপগুলি ব্রাউজার / ক্ষেত্র / ইত্যাদি দ্বারা যথারীতি পরিচালিত হবে যদি প্রবেশ-জমা যুক্তিটি ট্রিগার করা হয় তবে ব্রাউজারটি সেই লুকানো সাবমিট বোতামটি খুঁজে পেয়ে এটি ট্রিগার করে। এবং জাভাস্ক্রিপ্ট হ্যান্ডলার এর পরে সাবমিশনটি আটকাবে।
hidden
কম হবে। চমৎকার হ্যাক :)
আমি IE8,9,10, অপেরা 9+, ফায়ারফক্স 23, সাফারি (পিসি) এবং সাফারি (ম্যাক) এর জন্য এই ক্রস ব্রাউজারটি তৈরি করতে কিছু সময় ব্যয় করেছি
জেএসফিডাল উদাহরণ: http://jsfiddle.net/greatbigmassive/ZyeHe/
বেস কোড - এই ফাংশনটি আপনার ফর্মের সাথে সংযুক্ত "অনকাইপ্রেস" এর মাধ্যমে কল করুন এবং এতে "উইন্ডো.ভেন্ত" পাস করুন।
function stopEnterSubmitting(e) {
if (e.keyCode == 13) {
var src = e.srcElement || e.target;
if (src.tagName.toLowerCase() != "textarea") {
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
}
}
stopSubmitOnEnter (e) {
var eve = e || window.event;
var keycode = eve.keyCode || eve.which || eve.charCode;
if (keycode == 13) {
eve.cancelBubble = true;
eve.returnValue = false;
if (eve.stopPropagation) {
eve.stopPropagation();
eve.preventDefault();
}
return false;
}
}
তারপরে আপনার ফর্মটিতে:
<form id="foo" onkeypress="stopSubmitOnEnter(e);">
যদিও, আপনি যদি বাধা জাভাস্ক্রিপ্ট ব্যবহার না করেন তবে এটি আরও ভাল।
charCode
। আমি return false
যদি ইফ-ব্লকের ভিতরেও স্থানান্তরিত করেছি । ভালো বল ধরা.
আমার ক্ষেত্রে, এই jQuery জাভাস্ক্রিপ্ট সমস্যার সমাধান করেছে
jQuery(function() {
jQuery("form.myform").submit(function(event) {
event.preventDefault();
return false;
});
}
<input>
ফর্মের মধ্যে সমস্ত ক্ষেত্রের জন্য প্রবেশ কী সক্ষম করতে পারেন ?
ফর্ম জমা দেওয়ার জন্য "ENTER" রোধ করা আপনার ব্যবহারকারীদের কিছু অসুবিধে করতে পারে। সুতরাং আপনি নীচের পদ্ধতিটি অনুসরণ করলে এটি আরও ভাল হবে:
আপনার ফর্ম ট্যাগে 'অন সাবমিট' ইভেন্টটি লিখুন:
<form name="formname" id="formId" onSubmit="return testSubmit()" ...>
....
....
....
</form>
জাভাস্ক্রিপ্ট ফাংশন নীচে লিখুন:
function testSubmit(){
if(jQuery("#formId").valid())
{
return true;
}
return false;
}
(OR)
কারণটি কি, যদি আপনি এন্টার কী টিপে ফর্ম জমাটি আটকাতে চান তবে জাভাস্ক্রিপ্টে নিম্নলিখিত ফাংশনটি লিখতে পারেন:
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
ধন্যবাদ।
এই ফর্মটি আপনার ফর্মটিতে যুক্ত করুন - onsubmit="return false;"
তারপরে আপনি কিছু জাভাস্ক্রিপ্ট ফাংশন দিয়ে কেবল আপনার ফর্মটি জমা দিতে পারেন।
enterকোনও textarea
বা input
ক্ষেত্রের মধ্যে টিপে ফর্ম জমা প্রতিরোধ করতে , ইভেন্টটি কী ধরণের উপাদান প্রেরণ করেছে তা সন্ধানের জন্য জমা দিন যাচাই করুন।
<button type="submit" form="my-form">Submit</button>
<form id="my-form">
...
</form>
$(document).on('submit', 'form', function(e) {
if (e.delegateTarget.activeElement.type!=="submit") {
e.preventDefault();
}
});
আরও ভাল সমাধান হ'ল যদি আপনার কাছে সাবমিট বাটন না থাকে এবং আপনি ইভেন্টটিকে একটি সাধারণ বোতাম দিয়ে ফায়ার করেন। এটি আরও ভাল কারণ প্রথম পরীক্ষায় 2 টি জমা দেওয়ার ঘটনাগুলি বহিস্কার করা হয়, তবে দ্বিতীয় উদাহরণে কেবল 1 টি জমা দেওয়ার ঘটনাটি বরখাস্ত করা হয়।
<button type="button" onclick="$('#my-form').submit();">Submit</button>
<form id="my-form">
...
</form>
$(document).on('submit', 'form', function(e) {
if (e.delegateTarget.activeElement.localName!=="button") {
e.preventDefault();
}
});
আপনি এটি আরও সহজ এবং দরকারী পাবেন: ডি
$(document).on('submit', 'form', function(e){
/* on form submit find the trigger */
if( $(e.delegateTarget.activeElement).not('input, textarea').length == 0 ){
/* if the trigger is not between selectors list, return super false */
e.preventDefault();
return false;
}
});
দয়া করে এই নিবন্ধটি চেক করুন কীভাবে একটি ওয়েব ফর্ম জমা দেওয়ার কীটপথ ENTER রোধ করবেন?
$(“.pc_prevent_submit”).ready(function() {
$(window).keydown(function(event) {
if (event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class=”pc_prevent_submit” action=”” method=”post”>
<input type=”text” name=”username”>
<input type=”password” name=”userpassword”>
<input type=”submit” value=”submit”>
</form>
আপনি জাভাস্ক্রিপ্টে একটি ফর্মের কীডাউনটি আটকাতে এবং এমনকি বুদবুদ প্রতিরোধ করতে পারেন, আমি মনে করি। একটি ওয়েবপৃষ্ঠায় ENTER মূলত কেবলমাত্র নির্বাচিত নিয়ন্ত্রণটি ফর্মটি জমা দেয়।
এই লিঙ্কটি এমন একটি সমাধান সরবরাহ করে যা ক্রোম, এফএফ এবং আই 99 প্লাস আই 7 এবং 8 এর এমুলেটর যা আই 9 এর বিকাশকারী সরঞ্জাম (এফ 12) এর সাথে আসে।
<script type="text/javascript"> function stopRKey(evt) { var evt = (evt) ? evt : ((event) ? event : null); var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); if ((evt.keyCode == 13) && (node.type=="text")) {return false;} } document.onkeypress = stopRKey; </script>
অন্য পদ্ধতিটি হ'ল ফর্মটিতে জমা দেওয়া ইনপুট বোতামটি কেবল তখনই জমা দেওয়া হবে যখন ফর্মটি পূরণের সময় কোনও সরল ডিভি দ্বারা এটি জমা দেওয়া হবে
আপনার ফর্ম ট্যাগটিতে এই বৈশিষ্ট্যটি কেবল যুক্ত করুন:
onsubmit="return gbCanSubmit;"
তারপরে, আপনার স্ক্রিপ্ট ট্যাগে এটি যুক্ত করুন:
var gbCanSubmit = false;
তারপরে, আপনি যখন কোনও বোতাম তৈরি করেন বা অন্য কোনও কারণে (যেমন কোনও ফাংশন হিসাবে) আপনি শেষ পর্যন্ত কোনও জমা দেওয়ার অনুমতি দেন, কেবলমাত্র গ্লোবাল বুলেটিয়ানটি ফ্লিপ করুন এবং এই উদাহরণের অনুরূপ একটি। সাবমিট () কল করুন:
function submitClick(){
// error handler code goes here and return false if bad data
// okay, proceed...
gbCanSubmit = true;
$('#myform').submit(); // jQuery example
}
আমি নিজেই এটি জুড়ে এসেছি কারণ আমার কাছে বিভিন্ন 'নাম' মান সহ একাধিক জমা বোতাম রয়েছে, যাতে জমা দেওয়ার পরে তারা একই পিএইচপি ফাইলে বিভিন্ন জিনিস করে। enter
/ return
সেই মান হিসাবে বোতাম বিরতি এই পেশ করা হয় না। সুতরাং আমি ভাবছিলাম, enter
/ return
বাটনটি কি ফর্মের প্রথম জমা বোতামটি সক্রিয় করে? এইভাবে আপনার কাছে 'ভ্যানিলা' জমা দেওয়ার বোতাম থাকতে পারে যা হয় লুকানো থাকে বা একটি 'নাম' মান থাকতে পারে যা নির্বাহী পিএইচপি ফাইলটিকে ফর্মের সাথে পৃষ্ঠায় ফিরিয়ে দেয়। অথবা অন্যথায় কোনও ডিফল্ট (লুকানো) 'নাম' মান যা কীটিপ্রেস সক্রিয় করে, এবং জমা বোতামগুলি তাদের নিজস্ব 'নাম' মান দিয়ে ওভাররাইট করে। শুধু একটি ভাবনা.
কেমন:
<script>
function isok(e) {
var name = e.explicitOriginalTarget.name;
if (name == "button") {
return true
}
return false;
}
</script>
<form onsubmit="return isok(event);">
<input type="text" name="serial"/>
<input type="submit" name="button" value="Create Thing"/>
</form>
এবং ঠিক আপনার বোতামটির নাম দিন এবং এটি এখনও জমা দেবে, তবে পাঠ্য ক্ষেত্রগুলি যেমন স্পষ্টরূপে অর্গিনাল টার্জেট আপনি যখন কোনওটিতে ফিরে যান তখন সঠিক নাম থাকবে না।
এটি আমার পক্ষে কাজ করেছে।
অনকিডাউন = "রিটার্ন! (ইভেন্ট.কি কোড == ১৩)"
<form id="form1" runat="server" onkeydown="return !(event.keyCode==13)">
</form>
জাভাস্ক্রিপ্ট বাহ্যিক ফাইলের মধ্যে রাখুন
(function ($) {
$(window).keydown(function (event) {
if (event.keyCode == 13) {
return false;
}
});
})(jQuery);
বা কোথাও বডি ট্যাগের ভিতরে
<script>
$(document).ready(function() {
$(window).keydown(function(event) {
alert(1);
if(event.keyCode == 13) {
return false;
}
});
});
</script>
আমার একই সমস্যা ছিল (টন পাঠ্য ক্ষেত্র এবং দক্ষতাযুক্ত ব্যবহারকারীদের সাথে ফর্মগুলি)।
আমি এটি এইভাবে সমাধান করেছি:
function chkSubmit() {
if (window.confirm('Do you want to store the data?')) {
return true;
} else {
// some code to focus on a specific field
return false;
}
}
এটি এইচটিএমএল কোডে ব্যবহার করে:
<form
action="go.php"
method="post"
accept-charset="utf-8"
enctype="multipart/form-data"
onsubmit="return chkSubmit()"
>
এইভাবে ENTER
কীটি পরিকল্পনা অনুযায়ী কাজ করে তবে একটি নিশ্চিতকরণ (একটি দ্বিতীয় ENTER
ট্যাপ, সাধারণত) প্রয়োজন হয়।
আমি ENTER
ফর্মটিতে থাকার সিদ্ধান্ত নেন কিনা সে ক্ষেত্রে চাপ দেওয়ার জন্য ব্যবহারকারীকে সেই ক্ষেত্রে যেখানে তিনি চাপ দিয়েছিলেন সেখানে কোনও স্ক্রিপ্ট প্রেরণের জন্য অনুসন্ধান পাঠকদের কাছে ছেড়ে চলেছি ।