2013-04-04 1 views
9

सबमिट करने से पहले प्रारूपण को हटाएं। मैं एक jquery प्लगइन का उपयोग कर रहा हूं -> ऑटो न्यूमेरिक (http://www.decorplanit.com/plugin/) और जब मैं फॉर्म सबमिट करता हूं तो मैं पोस्ट से पहले फ़ील्ड पर स्वरूपण को हटा नहीं सकता।autoNumeric.js फॉर्म

मैंने $('input').autonumeric('destroy') (और अन्य विधियों) का उपयोग करने की कोशिश की लेकिन यह टेक्स्टफील्ड पर स्वरूपण छोड़ देता है।

मैं सर्वर पर अपरिवर्तित डेटा कैसे पोस्ट कर सकता हूं? मैं स्वरूपण को कैसे हटा सकता हूं? क्या प्रारंभिक कॉन्फ़िगरेशन में या कहीं और इसके लिए कोई विशेषता है?

--edit मैं धारावाहिक रूप डेटा को सर्वर (AJAX के साथ) नहीं भेजना चाहता हूं। मैं फॉर्म को सामान्य एचटीएमएल एक्शन जैसे अनफॉर्मेटेड डेटा के साथ जमा करना चाहता हूं।

उत्तर

12

मैं jQuery

$('form').submit(function(){ 
    var form = $(this); 
    $('input').each(function(i){ 
     var self = $(this); 
     try{ 
      var v = self.autoNumeric('get'); 
      self.autoNumeric('destroy'); 
      self.val(v); 
     }catch(err){ 
      console.log("Not an autonumeric field: " + self.attr("name")); 
     } 
    }); 
    return true; 
}); 

में इस के लिए एक बेहतर, कुछ और अधिक सामान्य हैक लिखा था इस कोड के रूप डब्ल्यू/त्रुटि नहीं autoNumeric मूल्यों पर से निपटने साफ।

+0

में उपयोग करूँगा, लेकिन एक या दो सेकंड के लिए (फॉर्म सबमिट होने पर) मैं अनफॉर्मेटेड मान देखता हूं। यह सिर्फ एक कॉस्मेटिक मुद्दा है, लेकिन यह थोड़ा परेशान है। – Adrian

+1

इसके लिए अब कोई आवश्यकता नहीं है, आप अभी निम्न विकल्प का उपयोग कर सकते हैं: '{unformatOn सबमिट करें: सत्य}' – Alex

1

get विधि का उपयोग करें।

'get' | ".val()" या ".text()" के माध्यम से गैर-स्वरूपित ऑब्जेक्ट देता है। $ (चयनकर्ता) .autoNumeric ('प्राप्त');


<script type="text/javascript"> 
    function clean(form) { 
     form["my_field"].value = "15"; 
    } 
</script> 

<form method="post" action="submit.php" onsubmit="clean(this)"> 
    <input type="text" name="my_field"> 
</form> 

यह हमेशा "15" प्रस्तुत करेगा। अब रचनात्मक हो :)


प्रतिबिंबित कच्चे मूल्य:

<form method="post" action="submit.php"> 
    <input type="text" name="my_field_formatted" id="my_field_formatted"> 
    <input type="hidden" name="my_field" id="my_field_raw"> 
</form> 

<script type="text/javascript"> 
    $("#my_field_formatted").change(function() { 
     $("#my_field").val($("#my_field_formatted").autoNumeric("get")); 
    }); 
</script> 

submit.phpmy_field_formatted के लिए मूल्य की अनदेखी और बजाय my_field का उपयोग में।

+0

विधि प्राप्त करें इनपुट फ़ील्ड का मान देता है। मुझे अपरिवर्तित फॉर्म जमा करने की आवश्यकता है। मैं एक क्षेत्र के लिए unformatted मूल्य नहीं प्राप्त करना चाहता हूँ। – zeal

+0

फिर मूल्य प्राप्त करें और सबमिट करें? मुझे लगता है कि आपके पास कुछ कस्टम 'ऑनसमेट' हैंडलर है, यदि नहीं, तो एक बनाएं, आपको इसकी आवश्यकता होगी। – Halcyon

+0

इसलिए अजाक्स अनुरोध के बिना बिना प्रारूपित डेटा सबमिट करना संभव नहीं है? – zeal

1

तुम हमेशा php str_replace समारोह का उपयोग कर सकते

str_repalce(',','',$stringYouWantToFix); 

यह सब अल्पविराम के निकाल देंगे। यदि आवश्यक हो तो आप मूल्य को पूर्णांक में डाल सकते हैं।

+0

क्यों php? (fyi मैंने ऐप के लिए सर्वर पक्ष पर जावा का उपयोग किया।) गलत समाधान, जवाब नहीं। – zeal

+0

इससे कोई फर्क नहीं पड़ता। जावा में शायद समान कार्यक्षमता वाले तरीके हैं। मैं इसे एक समाधान के रूप में देखता हूं क्योंकि यह स्वरूपण को हटा देगा और हम चाहते हैं कि हम चाहते हैं। क्लाइंट पक्ष क्यों करना महत्वपूर्ण है? – Reza

+1

क्योंकि यह बहु-स्तरित एप्लिकेशन में बहुत साफ है। विचार के लिए i.e. http://en.wikipedia.org/wiki/Loose_coupling पढ़ें। – zeal

2

अंदर डेटा कालबैक आप नीचे दिए गए जैसे GetString विधि कॉल करना होगा:

 $("#form").autosave({ 
     callbacks: { 
      data: function (options, $inputs, formData) { 

       return $("#form").autoNumeric("getString"); 
      }, 
      trigger: { 
       method: "interval", 
       options: { 
        interval: 300000 
       } 
      }, 
      save: { 
       method: "ajax", 
       options: { 
        type: "POST", 
        url: '/Action', 
        success: function (data) { 

        } 
       } 
      } 
     } 
    }); 
0
$("input.classname").autoNumeric('init',{your_options}); 
$('form').submit(function(){ 
    var form=$(this); 
    $('form').find('input.classname').each(function(){ 
     var self=$(this); 
     var v = self.autoNumeric('get'); 
     // self.autoNumeric('destroy'); 
     self.val(v); 
    }); 
}); 

classname अपने इनपुट वर्ग कि autoNumeric बुरा अंग्रेजी^_ के लिए खेद है के रूप में init जाएगा^

0

वहाँ एकीकरण के लिए एक और समाधान है जो आपके क्लाइंट-साइड सत्यापन में हस्तक्षेप नहीं करता है और न ही सबमिट करने से पहले बिना प्रारूपित पाठ के फ्लैश का कारण बनता है:

var input = $(selector); 
var proxy = document.createElement('input'); 
proxy.type = 'text'; 
input.parent().prepend(proxy); 
proxy = $(proxy); 
proxy.autoNumeric('init', options); 
proxy.autoNumeric('set', input.val())'' 
proxy.change(function() { 
    input.val(proxy.autoNumeric('get')); 
});