2013-11-01 4 views
2

У меня есть hiddentfield, значение которого меняется на javascript.Событие Fire Serverside от javascript

Я просто хотел запустить событие serveride eventchanged событие скрытого поля, когда его значение изменилось с javascript.

Я попытался с:

__doPostBack('hfLatitude', 'ValueChanged'); 

Но дает мне сообщение об ошибке:

Microsoft JScript runtime error: '__doPostBack' is undefined 

Есть ли другие альтернативы для этого?

Пожалуйста, помогите мне.

+0

Есть причина, почему вы не используете значение изменено событие скрытое поле в: <жерех: скрытое OnValueChanged = «EventHandler» /> – Zaki

+0

y6es, я использую его, но хочу называть его из javascript –

ответ

1

Первый способ - использовать HiddenField.ValueChanged Event.

Если вы также хотите посмотреть этот varible в стороне клиента просто используйте:

$('#hidden_input').change(function() { 
    alert('value changed'); 
}); 

Второй способ является присвоить значение Varible:

$('#hidden_input').val('new_value').trigger('change'); 
+0

, но для этого мне нужно иметь какой-либо файл jquery? –

+0

Да. Но вы также используете чистый JavaScript. Chek my edit :) –

+0

Что такое val ('new_value')? –

1

быстрый и грязный:

Проще говоря ap кнопка сверху форма. Установите его display:none.

<asp:Button id="xyx" runat="server" style="display:none" OnClick="xyx_Click" /> 

В своем событии click событие вызывает любое событие на стороне сервера.

protected void xyx_Click(o,e) 
{ 
    //you server side statements 
} 

вызвать его из JS использовать, как показано ниже:

<script> 

function myserverside_call() 
{ 
var o = document.getElementById('<%=xyx.ClientID%>'); 
o.click(); 
} 

function anyotherjsfunc() 
{ 
    //some statements 
    myserverside_call(); 
} 
</script> 
+0

У меня есть скрытое поле и событие valuechange, с которым его не работает –

4

В JavaScript, изменения значения в скрытых элементов автоматически не стрелять «OnChange» событие. Таким образом, вы должны вручную запустить свой код, который уже выполняется при обратной передаче, используя «GetPostBackEventReference».

Итак, с классическим подходом к JavaScript ваш код должен выглядеть примерно как в примере ниже.

В вашем ASPX/файла ASCX:

<asp:HiddenField runat="server" ID="hID" OnValueChanged="hID_ValueChanged" Value="Old Value" /> 
    <asp:Literal runat="server" ID="litMessage"></asp:Literal> 
    <asp:Button runat="server" ID="btnClientChage" Text="Change hidden value" OnClientClick="ChangeValue(); return false;" /> 

    <script language="javascript" type="text/javascript"> 

     function ChangeValue() 
     { 
      document.getElementById("<%=hID.ClientID%>").value = "New Value"; 
      // you have to add the line below, because the last line of the js code at the bottom doesn't work 
      fValueChanged(); 
     } 

     function fValueChanged() 
     { 
      <%=this.Page.GetPostBackEventReference(hID, "")%>; 
     } 

     // the line below doesn't work, this is why you need to manually trigger the fValueChanged methiod 
     // document.getElementById("<%=hID.ClientID%>").onchange = fValueChanged; 

    </script> 

В файле CS:

protected void hID_ValueChanged(object sender, EventArgs e) 
{ 
    litMessage.Text = @"Changed to '" + hID.Value + @"'"; 
} 
+0

Спасибо за ваш ответ, избавили меня от головной боли. Однако визуальная студия предупредила, что '' 'this.Page.GetPostBackEventReference''' теперь устарел, и лучше использовать' '' this.ClientScript.GetPostBackEventReference''' – OmarBizreh

Смежные вопросы