2014-03-31 1 views
1

У меня есть текстовое поле, и я изменяю значение этих текстовых полей на clientide (javascript), значение было изменено, но когда я прочитал на стороне сервера после того, как значение обратной передачи фактически не изменилось. мое текстовое поле не читается и не отключается. Обратите внимание, что я использую updatepanel, а мои postbacks - это async.any идея решить эту проблему?изменить значение текстового поля на стороне клиента и прочитать его на стороне сервера

обновление Я использую this JQuery для поддержки заполнителя в то есть, но это может вызвать ценность моего Textboxes равняться заполнителем значения, и этот конфликт, когда мой постбэк асинхронный. Для решения этой проблемы я использую ниже код 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 (для заполнителя в IE). может кто-нибудь помочь решить эту проблему? Спасибо.

+0

, что ваш код javqscript? –

+0

@SajithaRathnayake Я добавляю код javascript в свой вопрос –

ответ

0

Если вы не получали какое-либо решение, мое предложение было бы «использовать скрытое поле для хранения значения, и получить его на стороне сервера»

+0

. У меня все проблемы с этим текстовым полем. Эта проблема возникает только в IE, потому что я использую jquery.placeholder, я не могу использовать hf, потому что у меня много текстового поля с этой проблемой: ( –

+0

Я добавляю свой код javascript в вопрос, вы можете мне помочь? –

3

Вы изменили value из TextBox с javascript и соответствующей 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, потому что у меня много textbox с этой проблемой :( –

+0

Я добавляю свой код javascript в вопрос, вы можете мне помочь? –