जब आप एक इनपुट पर एंटर दबाएं को नियंत्रित ब्राउज़र पहला यह है कि प्रपत्र में बटन प्रस्तुत करना चाहता है और उस पर एक क्लिक simulates। एकाधिक बटनों के मामले में, पहला कीबोर्ड कीबोर्ड पर दबाया जाएगा (यह पत्थर में लिखे गए किसी भी माध्यम से नहीं है और ब्राउज़र इससे विचलित हो सकते हैं)।
यदि आपके पास दो रूप हैं, तो एक कुंजीपटल प्राप्त करने वाला व्यक्ति होगा पहले सबमिट बटन दबाएं। इसलिए आपको इसकी किसी भी विशेष संचालन की ज़रूरत नहीं है। आपको बस रास्ते में रहना बंद करना है।
आप कोड में इस अनुकरण कर सकते हैं, एक फार्म पर:
$('form').bind('keypress', function(e){
if (e.keyCode == 13) {
$(this).find('input[type=submit]:first').click();
}
});
या खिड़की (क्या मोटे तौर पर हो रहा है का एक प्रदर्शन के लिए):
$(window).bind('keypress', function(e){
if ($(e.originalTarget).is(':input') && e.keyCode == 13) {
$( e.originalTarget)
.closest('form')
.find('input[type=submit]:first')
.click();
}
});
निश्चित रूप से यह मानते हुए कि .preventDefault()
नहीं किया गया है घटना पर बुलाया।
नीचे पंक्ति: यदि आपके पास घटना है तो आप इससे दैवीय हो सकते हैं कि यह किस तत्व से आया है और इसलिए यह किस रूप में है।
<input type="button" value="LOGIN" name="btnLoginOk" onclick="submit();">
यहाँ submit()
एक वैश्विक समारोह है, लेकिन जब यह कहा जाता है, उसके संदर्भ (this
) तत्व होगा और आप submit(e){ this.form.submit(); }
ऐसा कर सकते हैं: यहां तक कि इस मामले में।
आवेदन तो वहाँ बटन नहीं प्रस्तुत कर रहे हैं डिजाइन किया गया है (इनपुट प्रकार के रूप में = "सबमिट करें") और, बजाय, डिजाइनरों onclick से निपटने के लिए चले गए हैं।
यह मुझे लगता है जैसे डिजाइनर पूरी तरह से डीओएम/फॉर्म घटनाओं को समझ नहीं पाता है और समस्या के चारों ओर लंबा रास्ता तय कर रहा है। एक अन्य संभावित कारण यह हो सकता है कि कार्यक्रम पुराना है और जब ये चीजें स्थिर नहीं थीं, या ठीक तरह से दस्तावेज की गईं, तो वे वापस डिजाइन किए गए थे।
इस बदलें:
<form action="/login/" method="POST">
[...]
<input type="submit" value="LOGIN" name="btnLoginOk">
</form>
फिर सभी रूपों की जरूरत है कि के लिए एक महत्वपूर्ण हैंडलर, कि पता लगाता है और प्रवेश करता है, तो कुछ हालत रूपों के लिए (पूरा किया जाता है को दबा जोड़ें:
<form action="/login/" method="POST">
[...]
<input type="button" value="LOGIN" name="btnLoginOk" onclick="submit();">
</form>
इस के साथ कि आप वास्तव में इसे अक्षम करना चाहते हैं)।
// for all forms that POST that have 2+ submit buttons
$('form[method=post]:has(:submit:eq(1))').bind('keydown', function(e){
// if target is an enter key, input element, and not a button
if (e.keyCode == 13 && e.target.tagName == 'INPUT' &&
!/^(button|reset|submit)$/i.test(e.target.type)) {
return false; // kill event
}
});
या बेहतर अभी भी: एक फॉर्म सत्यापन पुस्तकालय (या jQuery प्लगइन) का उपयोग करें जो जानता है कि यह आपके लिए कैसे करें।
मुझे लगता है कि आपको लगता है कि साथ में से कुछ को मजबूत कर सकते हैं:। $ ([ 'इनपुट', 'पाठ क्षेत्र', 'चयन']) फोकस (focus_form) .end() धुंधला (unfocus_form)। // सुनिश्चित नहीं है कि उस अंत की आवश्यकता है या – Matt
काम करेगा यह वही है जो मैं सोच रहा था। –