2015-01-15 19 views
5

में इनपुट टेक्स्ट मान्य करें मैं किसी भी ढांचे का उपयोग किये बिना बूटस्ट्रैप मोडल में एक फॉर्म को मान्य करना चाहता हूं। यह वास्तव में केवल एक इनपुट पाठ और दो बटन "बंद करें" और "भेजें" के साथ एक साधारण मोडल है। उपयोगकर्ता को अपना नाम इनपुट बॉक्स में टाइप करना चाहिए और भेजें पर क्लिक करना चाहिए। फॉर्म विधि पोस्ट के साथ भेजा गया है।बूटस्ट्रैप मोडल

मैं जो करना चाहता हूं वह यह है कि, यदि उपयोगकर्ता "भेजें" बटन पर इनपुट बॉक्स में क्लिक नहीं करता है, तो इनपुट बॉक्स में डिफ़ॉल्ट नीली सीमा के बजाय इसे एक लाल सीमा को घेरना चाहिए । यहाँ मेरी मोडल के लिए कोड है:

<div id="myModal" class="modal fade" tabindex="-1"> 
    <div class="modal-dialog modal-lg"> 
     <div class="modal-content"> 
      <!--form--> 

      <form class = "form-horizontal" id="myForm" method="post" action="test.php" role="form"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
        <h4 class="modal-title">My modal</h4> 
       </div> 
       <div class="modal-body"> 
        <p> 
         Please enter your name: 
        </p> 
        <br/> 

        <div class="form-group"> 

         <div class="col-lg-12"> 
          <label class="control-label" for="firstname">Name</label> 
          <input type="text" class="form-control required" id="firstname" name="firstname"> 
         </div> 
        </div> 

       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
        <button id="myFormSubmit" class="btn btn-primary">Send</button> 
       </div> 
      </form> 
     </div> 
    </div> 
</div> 

मैं जावास्क्रिप्ट का उपयोग करने के लिए has-error इनपुट पाठ के वर्ग बदलने की कोशिश की, लेकिन यह लाल घेरे के उत्पादन नहीं करता है। जब मैं पर क्लिक करें भेजने यह पोस्ट विधि के माध्यम से रिक्त मान भेजता बजाय की यहाँ मेरी जावास्क्रिप्ट कोड है:

<script type="text/javascript"> 
     $('#myForm').validate({ 
      rules: { 
       name: { 
        minlength: 1, 
        required: true 
       }, 
      }, 
      highlight: function (element) { 
       $('#firstname').removeClass('has-success').addClass('has-error'); 
      }, 
      success: function (element) { 
       $('#firstname').removeClass('has-error').addClass('has-success'); 
      } 
     }); 
    </script> 

मुझे लगता है कि मैं यहाँ चीजों की एक पूरी बहुत कुछ मिश्रण कर रहा हूँ। मैं अभी भी बूटस्ट्रैप और जावास्क्रिप्ट के लिए नया हूँ। वांछित लाल रूपरेखा प्राप्त करने के बारे में मैं कैसे जा सकता हूं? धन्यवाद।

संपादित करें: मान्य समारोह:

function validate() { 
    var x = document.forms["myForm"]["firstname"].value; 
    if (x == null || x == "") { 
     return false; 
    } 
} 

उत्तर

11

आप inputमाता पिता तत्व div.form-group, नहीं input ही की CSS वर्गों को बदलने की जरूरत

<div class="form-group has-error"> 
    <div class="col-lg-12"> 
     <label class="control-label" for="firstname">Name</label> 
     <input type="text" class="form-control required" id="firstname" name="firstname"> 
    </div> 
</div> 

करने के लिए इसे प्राप्त करें, अपने JavaScript कोड को इसमें बदलें:

<script type="text/javascript"> 
    $('#myForm').on('submit', function(e) { 
    var firstName = $('#firstname'); 

    // Check if there is an entered value 
    if(!firstName.val()) { 
     // Add errors highlight 
     firstName.closest('.form-group').removeClass('has-success').addClass('has-error'); 

     // Stop submission of the form 
     e.preventDefault(); 
    } else { 
     // Remove the errors highlight 
     firstName.closest('.form-group').removeClass('has-error').addClass('has-success'); 
    } 
    }); 
</script> 
+0

फ़ॉर्म को सत्यापित करने का एक तरीका है। मैं एक या दो चीज़ समझ गया। मैंने आपके कोड की कोशिश की लेकिन इनपुट शुरुआत से लाल रूपरेखा है। मुझे लगता है कि मैंने खुद को अच्छी तरह व्यक्त नहीं किया। मैं चाहता हूं कि प्रेषण बटन पर क्लिक करने के बाद ही इनपुट को लाल रंग में रेखांकित किया जाए। यदि इनपुट खाली है और उपयोगकर्ता प्रेषण बटन पर क्लिक करता है, तो उसे इनपुट लाल रूपरेखा चाहिए। – mkab

+0

मैं देखता हूं, मैंने आपको यह दिखाने के लिए 'एचटीएमएल' कोड रखा है कि 'डीओएम' में 'हैस-एरर' सीएसएस वर्ग स्टैंड होना चाहिए। आपको केवल जावास्क्रिप्ट की आवश्यकता नहीं है। प्रारंभिक स्थिति में 'है-एरर' कक्षा नहीं होनी चाहिए। –

+0

ओह ठीक है मैं देखता हूँ। फिर भी फॉर्म सबमिट किया जाता है भले ही इनपुट टेक्स्ट खाली हो। शायद मुझे फॉर्म की डिफ़ॉल्ट कार्रवाई को रोकना चाहिए, क्योंकि फॉर्म एक पोस्ट विधि का उपयोग कर रहा है। मैं इसके बारे में कैसे जा सकता हूं? – mkab

1

बूट पट्टा में div ...

<div class="form-group"> 
    <div class="row"> 

     <label class="col-xs-2 col-sm-2 control-label">city:</label> 

     <div class="col-xs-3 col-sm-3 formGroups" 
      id="city_form1"> 
      <form:input name="city" class="form-control" 
       placeholder="City" data-toggle="tooltip" 
       data-placement="bottom" title="City" maxlength="15" /> 

      <small class="help-block col-sm-offset-0 col-sm-9" 
       style="display: none;">city must require</small> 
     </div> 
    </div> 
</div> 

जैसा कि आप देख नहीं है .help-ब्लॉक प्रदर्शन है: कोई नहीं अब आप जावास्क्रिप्ट समारोह लिख सकते हैं और सत्यापन की जांच करें और यदि सत्यापन अब पास करता है तो इसे प्रदर्शित करें: ब्लॉक ... इस तरह से आप

बूट पट्टा के साथ आनंद ले सकते हैं :)

इस तरह दिखना चाहिए सबमिट बटन पर क्लिक करने के बाद

HTML:

+0

धन्यवाद इनपुट क्षेत्र के अंदर आवश्यक उपयोग div करने के लिए। मैं इनपुट टेक्स्ट को रेखांकित करना चाहता हूं लाल संदेश को प्रदर्शित नहीं करना चाहता है कि एक निश्चित इनपुट की आवश्यकता है। हालांकि मैं मानता हूं कि यह आपकी सहायता के लिए फॉर्म – mkab

1

इसकी बहुत आसान

सिर्फ लागू वर्ग हालांिक त्रुटि द्वारा जावास्क्रिप्ट समारोह

<div class="form-group has-error"> 
    <div class="row"> 

     <label class="col-xs-2 col-sm-2 control-label">city:</label> 

     <div class="col-xs-3 col-sm-3 formGroups" 
      id="city_form1"> 
      <form:input name="city" class="form-control" 
       placeholder="City" data-toggle="tooltip" 
       data-placement="bottom" title="City" maxlength="15" /> 

     </div> 
    </div> 
</div> 
0

वैसे ही जैसे आपकी मदद के लिए इस

<input type="text" class="form-control required" id="firstname" name="firstname" required/> 
+0

यह बहुत जोखिम भरा है। एचटीएमएल 5 सत्यापन बहुत आसानी से बाईपास किया जा सकता है। – Hanmaslah

+0

@ हंसस्लाह * किसी भी * क्लाइंट-साइड सत्यापन को आसानी से बाईपास किया जा सकता है, इसलिए आपको लगभग सर्वर-साइड सत्यापन का भी उपयोग करना चाहिए – Cocowalla

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