2011-05-01 22 views
14

मेरे पास एक सूची है, (एक साधारण सूची) जिसमें से मैं तत्वों (जेएस का उपयोग करके) चुनने और सेट करने में सक्षम हूं, और फिर एक ऐसा फॉर्म जो मुझे चुनने की अनुमति देता है कि मैं कितने तत्व चाहता हूं, और एक फॉर्म सबमिट करें। अगर कोई तत्व का चयन नहीं करता है, तो एक ऐसी स्क्रिप्ट है जो अपवाद फेंकता है। समस्या यह है कि मैं चाहता हूं कि फ़ॉर्म सबमिट नहीं होता है, अगर कोई तत्व नहीं चुना गया है, लेकिन अपवाद फेंक नहीं है, लेकिन मुझे सबमिट बटन (jquery का उपयोग करके) को एक संदेश दिखाने के लिए। नीचे मेरी स्क्रिप्ट:फॉर्म सबमिट करने से पहले Jquery

<? foreach ($types as $type):?> 
<ul class = "product_types"> 
    <? if ($type->stock_2 > 0):?> 
    <li id = 'product_types'><a href="#" onclick='selecteazaElement(<?= $type->id; ?>,<?= $type->stock_2; ?>);'><?= $type->label; ?></a></li> 
    <? else: ?> 
    <li id = 'product_unavailable_types'><label><?= $type->label; ?></label></li> 
    <? endif; ?> 

</ul> 
<? endforeach; ?> 
<form name="addtobasket" method="POST" action="<?= Route::url('Add to Basket', array('sale_id' => $sale->id)); ?>"> 
    <input type="hidden" name="idOfSelectedItem" id="idOfSelectedItem" value="-1"> 
    <select name="number" id="number"> 
     <option value=0>Alege numarul de produse</option> </select> 
    <button type="submit" name = "submit" onclick="addtobasket";>Adauga in cos</button><br /> 
</form> 

और js उस सूची तत्वों सेट:

<script type="text/javascript"> 
    function selecteazaElement(id,stock) 
    { 
    document.addtobasket.idOfSelectedItem.value=id; 
    window["canSubmit"] = true; 
    var number23=document.addtobasket.number; 
    number23.options.length=0; 
    if (stock>=6) 
    stock=6; 
    for (i=1;i<=stock;i++) 
    { 
//alert ('id: '+id+'; stock: '+stock); 
    number23.options[number23.options.length]=new Option(i, i); 
    } 
//window.status="my status"; 
} 
+2

जावास्क्रिप्ट ब्राउज़र पर देखे गए और प्रस्तुत किए गए एचटीएमएल पर काम करता है। क्या आप उस पृष्ठ के प्रासंगिक HTML (स्रोत देखें) पोस्ट कर सकते हैं? –

+0

हम्म .. विचार है: मैं सिर्फ उस फॉर्म में एक jquery ईवेंट श्रोता जोड़ना चाहता हूं। ताकि, यदि मैं सूची से कोई ईवेंट चुनने के बिना इसे प्रस्तुत करने का प्रयास करता हूं, तो एक mssage प्रकट करने के लिए और फॉर्म सबमिट नहीं करता ... क्या यह संभव हो सकता है? धन्यवाद! – dana

+0

मैं कुछ rendered एचटीएमएल आउटपुट को – netbrain

उत्तर

29

फार्म के लिए एक submit श्रोता जोड़ें। जब यह सबमिट किया जाता है, तो यह देखने के लिए जांचें कि कोई तत्व चुना गया है, और यदि नहीं, तो आप return false का उपयोग करके सबमिशन को रोक सकते हैं। यहाँ एक उदाहरण है:

$('#myForm').submit(function() 
{ 
    if (/* test case not true */) { 
     $('#myError').show(); 
     return false; 
    } 

    // ... continue work 
}); 

और यहाँ एचटीएमएल है:

<form id="myForm"> 
    <input type="text"/> 
    <input type="submit"/> 
</form> 

आप jQuery का उपयोग नहीं करना चाहते हैं, आप भी प्रस्तुत घटना सादे जावास्क्रिप्ट के साथ इतना की तरह संभाल कर सकते हैं:

var myform = document.getElementById('myForm'); 
myform.addEventListener('submit', function() { console.log('Submitted!'); return false; }); 
+0

देखना चाहूंगा यदि मैं फॉर्म में सबसे सरल ईवेंट श्रोता जोड़ता हूं (बस यह जांचने के लिए कि यह काम करता है, मैं इसे काम नहीं कर सकता ...) कोड: और मैंने फ़ॉर्म में एक आईडी जोड़ दी है। – dana

+1

आपके पास jQuery शामिल है? यह उत्तर jQuery का उपयोग करता है जिसे आपने अपने प्रश्न में उपयोग नहीं किया था। –

+0

मैंने दिए गए HTML पर अपने कोड का परीक्षण किया, और यह ठीक काम करता है। क्या आपने मुझे दिखाए गए सटीक कोड का उपयोग किया था? साथ ही, यह देखने के लिए इसे चलाने का प्रयास करें कि आप सही फॉर्म का चयन कर रहे हैं: 'console.log ($ ('# addtobasket'));'। – theabraham

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