2010-10-28 14 views
10

पर पोस्ट इनपुट इनपुट मान संशोधित करें onbeginajax.beginform पर इनपुट मानों को संशोधित किया जा सकता है? फ़ॉर्म सबमिट होने के बाद मुझे कुछ इनपुट फ़ील्ड के मानों को संशोधित करना होगा। लेकिन अगर मैं request.form में सर्वर पक्ष पर जेएस के माध्यम से मानों को बदलता हूं, तो मुझे पुराने मान मिल रहे हैं जो फॉर्म सबमिट के समय शुरू में सेट किए गए थे। Request.form में संशोधित मान कैसे प्राप्त करें?AJAX.beginform

<% using(Ajax.BeginForm("action", "controller", 
    new AjaxOptions{onbegin="funBegin",oncomplete="funComplete"})){ 
%> 

<input type="text" id="txtName" name="txtName" value="gaurav"/> 
<input type="text" name="txtAge" value="26"/> 
<input type="submit" value="click here" /> 

<% } %> 

<script type="text/javascript"> 
    function funBegin() { 
     $("#txtName").val("gaurav pandey"); 
    } 
    function funBegin(result) { 
     $("#divParent").html(result.get_data()); 
    } 
</script> 

अब जब मैं सर्वर साइड पर request.form["txtname"] प्राप्त करने की कोशिश, मैं "गौरव" "गौरव पांडे" के बजाय हो रही है:

कोड ब्लॉक इस प्रकार है।

+0

अच्छे सवाल लिखें, हम नहीं एक सीधा जवाब है, तो आप एक स्पष्ट सवाल – Nealv

+0

@Nealv पोस्ट न करें दे सकते हैं। आशा करता हूँ की ये काम करेगा। धन्यवाद – gaurav

+1

क्या आप वह कोड प्रदान कर सकते हैं जो काम नहीं कर रहा है? – sheikhomar

उत्तर

8

आपको यह समस्या हो रही है क्योंकि फॉर्म डेटा को क्रमबद्ध करने के बाद funBegin कहा जाता है। MSDN से:

AjaxOptions.OnBegin संपत्ति: पृष्ठ अपडेट होने से ठीक पहले कॉल करने के लिए जावास्क्रिप्ट फ़ंक्शन का नाम प्राप्त या सेट करता है।

मैं सुझाव है कि आप अपने प्रश्न सबमिट हैंडलर लिखें:

<form id="myform" action="/Home/MyAction"> 
    <input type="text" id="txtName" name="txtName" value="gaurav" /> 
    <input type="submit" value="Submit" /> 
</form> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#myform').submit(function() { 
      $("#txtName").val("gaurav pandey"); 

      var form = $(this); 
      var url = form.attr('action'); 
      var formData = form.serialize(); 
      $.post(url, formData, function(result) { 
       // Do something with result 
      }); 

      return false; 
     }); 
    }); 
</script> 
15

मैं MVC के फार्म इतना निपटने प्रस्तुत करने के बाहर जाने का मन नहीं था कि मैं अलग तरह से इस को हल किया। बस फॉर्म के सबमिट बटन के क्लिक हैंडलर से जुड़ें। वहां अपने इनपुट मूल्य को झुकाएं। एमवीसी के फॉर्म क्रमबद्धता से पहले ऑनक्लिक निकाल दिया गया है। ऑनक्लिक को भी कॉल किया जाता है भले ही फॉर्म पर मारने वाले उपयोगकर्ता द्वारा सबमिट किया गया हो दर्ज करें।

+1

बस एक ही समस्या थी और यह मुझे बचाया। – Joel

+1

@xanadont यह मेरे लिए काम नहीं कर रहा है, क्या आप विवरण पोस्ट कर सकते हैं अगर ऐसा कुछ विशिष्ट है जो इसे काम करने के लिए किया जाना चाहिए –

2

वहाँ एक और तरीका है कि ऐसा करने के लिए है:।

function funBegin(jqXHR, settings) { 
    // before POST - change whatever posted value you want and then 
    // serialize again your form supposedly identified here by form 

     settings.data = form.serialize(); 

    // the advantage is when you arrive here, the form validators have already been executed 
    // and you know you have valid values - so you can post 
    } 
} 

मानकों के अर्थ के लिए देखें [http://api.jquery.com/jquery.ajax/]

0

$ ('# MyForm') प्रस्तुत() IE पर काम नहीं करेगा। यदि कोई सत्यापन है, तो आप फ़ॉर्म डेटा एकत्र करने के लिए नकली सत्यापन विधि बनाने का प्रयास कर सकते हैं।

नीचे Jquery.validaton की तरह: हाय, मैं सवाल को संशोधित किया है:

jQuery.validator.addMethod("fakeMethod", function (value, element) { 
       YOUR DOM CODE HERE!!! 
       return true; 
      }, ""); 
संबंधित मुद्दे