2014-03-31 58 views
1

我有一些文本框,我改變了這個文本框在客戶端(javascript)的值,值被改變了,但是當我在服務器端讀取回傳後實際值沒有改變。我的文本框不是隻讀或禁用。 請注意,我使用updatepanel和我的回傳是async.any的想法來解決這個問題?在客戶端更改文本框的值,並在服務器端讀取

更新 我使用jQuery的this支持,即佔位符,但它會導致價值我文本框等於佔位符值,而這個衝突時,我回發是異步。爲解決這個問題,我使用下面的jQuery代碼:

function EndRequestPostBackForUpdateControls() { 
//*****************************For place holder support in ie****************************** 
if (runPlaceHolder != 0) { 
    //alert('end'); 
    $('input, textarea').placeholder(); 


    var $inputs = $('.placeholder'); 
    $inputs.each(function() { 

     var $replacement; 
     var input = this; 
     var $input = $(input); 
     var id = this.id; 
     if (input.value == '') { 
      if (input.type == 'password') { 
       if (!$input.data('placeholder-textinput')) { 
        try { 
         $replacement = $input.clone().attr({ 'type': 'text' }); 
        } catch (e) { 
         $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' })); 
        } 
        $replacement 
        .removeAttr('name') 
        .data({ 
         'placeholder-password': $input, 
         'placeholder-id': id 
        }) 
        .bind('focus.placeholder', clearPlaceholder); 
        $input 
        .data({ 
         'placeholder-textinput': $replacement, 
         'placeholder-id': id 
        }) 
        .before($replacement); 
       } 
       $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); 
       // Note: `$input[0] != input` now! 
      } 
      $input.addClass('placeholder'); 
      $input[0].value = $input.attr('placeholder'); 
     } else { 
      $input.removeClass('placeholder'); 
     } 
    }); 
}} 
function safeActiveElement() { 
// Avoid IE9 `document.activeElement` of death 
// https://github.com/mathiasbynens/jquery-placeholder/pull/99 
try { 
    return document.activeElement; 
} catch (err) { }} 

function BeginRequestPostBackForUpdateControls() { 
//*****************************For place holder support in ie****************************** 
if (runPlaceHolder != 0) { 
    // Clear the placeholder values so they don't get submitted 
    var $inputs = $('.placeholder').each(function() { 
     var input = this; 
     var $input = $(input); 
     if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) { 
      if ($input.data('placeholder-password')) { 

       $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); 
       // If `clearPlaceholder` was called from `$.valHooks.input.set` 
       if (event === true) { 
        return $input[0].value = value; 
       } 
       $input.focus(); 
      } else { 
       alert($(this)[0].value); 
       $(this)[0].value = ''; 
       alert($(this)[0].value); 
       $input.removeClass('placeholder'); 
       input == safeActiveElement() && input.select(); 
      } 
     } 
    }); 
}} 

$(document).ready(function() { 

    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_beginRequest(BeginRequestPostBackForUpdateControls); 

    prm.add_endRequest(EndRequestPostBackForUpdateControls); 

}); 

我用這個代碼add_beginRequest發送到服務器之前清除我的文本框的值,並在add_endRequest(即中的佔位符)的設定值。 任何人都可以幫助解決這個問題?謝謝。

+0

你有什麼javqscript代碼代碼? –

+0

@SajithaRathnayake我在我的問題中添加了javascript代碼 –

回答

0

如果你沒有得到任何解決方案,我的建議是,「使用隱藏字段來存儲的價值,並檢索它在服務器端」

+0

我的所有文本框都有這個問題。這個問題只是在IE中引起的,因爲我使用jquery.placeholder,我不能使用hf,因爲我有很多帶有這個問題的文本框: ( –

+0

我添加了我的javascript代碼問題,你能幫我嗎? –

3

你跟javascript改變TextBoxvalue和相應ViewState是未更新。您可以使用hidden字段將值存儲在javascript中並將其置於代碼後面。

的Html

<input type="hidden" id="hdn" runat="server" /> 

的JavaScript

document.getElementById("hdn").value = "your value"; 

背後

string hdnValue = hdn.Value; 
+0

我的所有文本框都有這個問題。這個問題只在IE中引起,因爲我使用jquery.placeholder,我不能使用hf因爲我有很多有這個問題的文本框:( –

+0

我添加了我的JavaScript代碼問題,你能幫我嗎? –

相關問題