2012-07-06 24 views
5

पर मेरे पास कुछ क्रिया और ऑनबमिट मानों के साथ एक फॉर्म है, जो सबमिट इनपुट टैग के माध्यम से सबमिट किया गया है। समस्या यह है कि दो बटन द्वारा submittable होना चाहिए है, इसलिए मैं दूसरा बटन के लिए एक समारोह लिखा कार्रवाई और फार्म की ऑनसबमिट मूल्यों को बदलने के लिए: पर क्लिक करने के बादजावास्क्रिप्ट परिवर्तन फ़ॉर्म गतिशील रूप से

<a href="javascript:submitCompare()" class="submit">Compare</a> 

function submitCompare() 
{ 
    document.myForm.action = "anotherAction.php"; 
    document.myForm.onsubmit = function() {return countChecked()}; 
    document.myForm.submit(); 
} 

function countChecked() 
{ 
    var n = $(".reports input:checked").length; 
    if (n >= 3) { 
    alert ('You must select less than 3 reports.'); 
    return false; 
    } 
    else return true; 
} 

लिंक यह मेरे लिए भेजता है की तुलना करें anotherAction.php पृष्ठ सही ढंग से, लेकिन यहां तक ​​कि जब मेरे पास 2 से अधिक चयनित चेकबॉक्स हैं (जो सत्यापन नियम है)। क्या कोई मुझे ऑनसबमिट फ़ंक्शन को सही तरीके से काम करने में मदद कर सकता है?

+0

बस अतिरिक्त नोट के, मुझे लगता है कि '(एन> 2)' बजाय 'के लिए पर्याप्त है (एन> = 3)' – codingbiz

उत्तर

1

submitCompare() में, आप स्पष्ट रूप से और बिना शर्त

document.myForm.submit(); 

फोन क्या आप शायद चाहते बजाय है

if (countChecked()) { 
    document.myForm.submit(); 
} 
+0

बहुत बहुत धन्यवाद, इस तरह यह पूरे विचार को सरल बनाता है और वास्तव में काम करता है! – user1507558

+0

सही उत्तर स्वीकार करना न भूलें ;-) (बाईं ओर स्थित चेकमार्क) –

4
document.myForm.onsubmit = function() {return countChecked()}; 

document.myForm.onsubmit = function(e) { 
    e = e || window.event; 
    if (!countChecked()) { 
     e.preventDefault(); 
     e.returnValue = false; 
    } 
}; 

एक प्रस्तुत बस किसी भी आगे समारोह निष्पादन खत्म हो जाएगा पर झूठी रिटर्निंग होना चाहिए। यदि आप इसे सबमिट नहीं करना चाहते हैं तो आप डिफॉल्ट सबमिशन व्यवहार को रोकना चाहते हैं।

+0

यह कोशिश की, लेकिन कोई बदलाव नहीं आया था जमा प्रक्रिया के व्यवहार में। – user1507558

+0

शायद यह आपकी गिनती है। यह देखने के लिए कुछ कंसोल.लॉग करने का प्रयास करें कि क्या यह सही चेक चेकबॉक्स प्राप्त कर रहा है – Trevor

+0

गिनती जांच() सही मान लौटा दी गई है। मैं वास्तव में नहीं जानता कि आपका समाधान क्यों काम नहीं करता है, लेकिन @ ऑटो ऑलमेंडर को यह मेरे लिए सही मिला, इसलिए मामला बंद हो गया :) – user1507558

2

यह एक देर से उत्तर है, लेकिन अगर किसी और को इस पर विचार कर रही है ...

के बजाय:

document.myForm.onsubmit = function() {return countChecked()}; 

मैं तुम्हें चाहता था लगता है:

document.myForm.setAttribute("onsubmit", "return countChecked()"); 
+0

आपने अपना मूल्यवान अंतिम मिनट समय बचाया – TheRumboJumbo