2013-01-31 18 views
8

मैं निम्नलिखित के साथ एक रूप है:jQuery का पता लगाने के जो बटन सबमिट किए गए फ़ॉर्म

<form id="my-form" ...> 
    ... 
    <button type="submit" name="bttnsubmit" value="1">The first button</button> 
    <button type="submit" name="bttnsubmit" value="2">The last button</button> 
</form> 

मैं चाहूँगा पता लगाने के लिए जो सिर्फ का उपयोग कर चालू होने वाले प्रपत्र घटना सबमिट करें:

$('#my-form').submit(function(){ 
    //psuedo code 
    if($('[name=bttnsubmit]').val() == 1) { 
     .... 
    } 
}); 

जाहिर है कि चयनकर्ता होगा हमेशा पहले bttnsubmit तत्व के मान को वापस लौटाएं, इसलिए मुझे कुछ अन्य जादू चयनकर्ता या फ़िल्टर या कुछ चाहिए।

मैं $('[name=bttnsubmit][clicked=true]') के बारे में बताया, लेकिन वह अभी तक अपने प्रयास में काम नहीं किया है देखा है ...

मैं $('[name=bttnsubmit]').click() करने के लिए पाठ्यक्रम रिसोर्ट के लेकिन रूपों में अपने लक्ष्यों को प्राप्त करने के घटना प्रस्तुत सक्षम होने के लिए पसंद करेंगे सकता है।

कोई भी मदद/टिप्स बहुत सराहना की।

उत्तर

12

मुझे नहीं पता कि कोई भी इवेंट डेटा (शायद वहां है) में कोई अंतर्निहित है या नहीं, लेकिन एक विचार जो दिमाग में आता है, बटन के क्लिक ईवेंट को संभालने और मूल्य का वैश्विक संदर्भ संग्रहीत करना है। कुछ इस तरह:

var ButtonValue; 

$('button[type="submit"]').click(function(e){ 
    ButtonValue = $(this).val(); 
}); 

$('#my-form').submit(function(){ 
    //psuedo code 
    if(ButtonValue == 1) 
    { 
     .... 
    } 
}); 
+0

है कि मुझे क्या करना होगा। thanx –

0

अपने बयान के बारे में:

मैंने देखा है $ ('[नाम = bttnsubmit] [क्लिक किया = true]') के बारे में बताया, लेकिन वह अभी तक अपने प्रयास में काम नहीं किया है ...

मुझे यह कहीं और सही ढंग से समझाया नहीं गया है। यह एक स्वचालित बात नहीं है। जब भी सबमिट बटन क्लिक किया जाता है तब भी आपको "क्लिक" विशेषता जोड़कर इसे सेट अप करने की आवश्यकता होती है।

$("#my-form input[type=submit]").click(function() { 
    $("input[type=submit]", $(this).parents("form")).removeAttr("clicked"); 
    $(this).attr("clicked", "true"); 
}); 
$("#my-form").submit(function() { 
    var clickedSubmitValue = $("input[type=submit][clicked=true]").val(); 
    if (clickedSubmitValue == "1") 
    { 
     ... 
    } 
}); 

उदाहरण के लिए here

+0

यह यहां भी अच्छी तरह से प्रलेखित है: http://stackoverflow.com/a/5721762/277303 –

5

यह उत्तर @ musefan के उत्तर का एक सुधार है।

वैश्विक चर से बचें। यह रूप में डेटा रखने के लिए बेहतर है:

$('button[type=submit]').click(function (e) { 
    var button = $(this); 
    buttonForm = button.closest('form'); 
    buttonForm.data('submittedBy', button); 
}); 

और हैंडलर प्रस्तुत में बस इसे पाने:

$('#my-form').submit(function (e) { 
    var form = $(this); 
    var submittedBy = form.data('submittedBy'); 
    if(submittedBy.val() == 1) { 
     // Any code here... 
    } 
}); 

फार्म मार 'दर्ज' द्वारा प्रस्तुत किया जा सकता है। submittedBy चर में null बचने के लिए:

var submittedBy = form.data('submittedBy') || form.find('button[type=submit]:first'); 
+0

एचएम, यह वास्तव में मेरे लिए काम नहीं करता है। 'Submit' हैंडलर' के पक्ष में बटन 'क्लिक' हैंडलर को अनदेखा किया जा रहा है। –

+0

* फेसपाल्म * उपेक्षा^ऐसा इसलिए है क्योंकि मैं का उपयोग कर रहा हूं

संबंधित मुद्दे