javascript - net - cambiar texto label jquery
Establecer la propiedad de texto de asp: label en modo Javascript PROPER (7)
Coloca el control de HiddenField en tu formulario.
<asp:HiddenField ID="hidden" runat="server" />
Crear una propiedad en el formulario
protected String LabelProperty
{
get
{
return hidden.Value;
}
set
{
hidden.Value = value;
}
}
Actualizar el valor del campo oculto de JavaScript
<script>
function UpdateControl() {
document.getElementById(''<%=hidden.ClientID %>'').value = ''12'';
}
</script>
Ahora puede acceder a la Propiedad directamente a través de la Postback
. El valor actualizado de Label
Control se PostBack
en PostBack
en caso de que se use directamente en el código que se encuentra detrás.
Tengo una serie de cuadros de texto en un formulario. Cuando el usuario inserta números en estos cuadros de texto, se realizan cálculos y los controles <asp:Label>
se actualizan a través de JavaScript para reflejar estos cálculos:
document.getElementById(''<%=TotalLoans.ClientID %>'').innerHTML = TotalLoans;
Esto actualiza correctamente la interfaz de usuario. Sin embargo, cuando intento acceder al valor en el código, la propiedad de Text
está vacía. Esto tiene sentido, supongo, ya que estaba actualizando la propiedad innerHTML
través del JavaScript.
//TotalLoans.Text will always be equal to "" in this scenario
double bTotalLoans = string.IsNullOrEmpty(TotalLoans.Text)
? 0.00
: Convert.ToDouble(TotalLoans.Text);
¿Cómo actualizo la propiedad de Text
de <asp:Label>
través de JavaScript de manera que pueda leer la propiedad en el código?
Actualizar
Este es un pequeño problema en un formulario grande que contiene 41 etiquetas, cada una de las cuales muestra los resultados de algunos cálculos para el usuario. Siguiendo el consejo de FishBasketGordo, convertí mi <asp:Label>
a un <asp:TextBox>
deshabilitado. Estoy configurando el valor del nuevo cuadro de texto como tal:
document.getElementById(''<%=TotalLoans.ClientID %>'').value = TotalLoans;
Nuevamente, en el código, el valor de TotalLoans.Text
siempre es igual a "".
No me importa cambiar la forma en que me acerco a esto, pero aquí está el punto crucial del asunto.
Estoy usando JavaScript para manipular los valores de propiedad de algunos controles. Necesito poder acceder a estos valores manipulados desde el código que está detrás cuando se hace clic en "Enviar".
¿Algún consejo de cómo puedo hacer esto?
Actualización 2
Respecto a la respuesta de @James Johnson, no puedo recuperar el valor utilizando la propiedad .innerText
como se sugiere. He configurado EnableViewState
como verdadero en <asp:Label>
. ¿Hay algo más que me esté perdiendo?
No entiendo por qué, cuando escribo un cuadro de texto y envío el formulario, puedo acceder al valor en el código de código, pero cuando cambio el texto de un cuadro de texto o una etiqueta mediante programación, no puedo acceder al nuevo valor. .
Éste funciona para mí con el control de etiquetas asp.
function changeEmaillbl() {
if (document.getElementById(''<%=rbAgency.ClientID%>'').checked = true) {
document.getElementById(''<%=lblUsername.ClientID%>'').innerHTML = ''Accredited No.:'';
}
}
Asp.net codebehind se ejecuta en el servidor primero y luego la página se representa al cliente (navegador). Codebehind no tiene acceso al lado del cliente (javascript, html) porque vive solo en el servidor.
Por lo tanto, utilice ajax y el valor enviado de la etiqueta para codificar detrás. Puede usar PageMethods
, o simplemente publicar la página en el servidor donde se encuentra el código, para que el código pueda conocer el valor actualizado :)
Como ha actualizado el lado del cliente de su etiqueta, necesitará una devolución posterior para que el código del lado del servidor refleje los cambios.
Si no sabe cómo hacerlo, aquí es cómo lo he hecho en el pasado.
Crear un campo oculto:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
Cree un botón que tenga asociadas las funciones del lado del cliente y del servidor. Su función del lado del cliente llenará su campo oculto, y el lado del servidor lo leerá. Asegúrate de que tu lado del cliente se llame primero.
<asp:Button ID="_Submit" runat="server" Text="Submit Button" OnClientClick="TestSubmit();" OnClick="_Submit_Click" />
Función del lado del cliente de Javascript:
function TestSubmit() {
try {
var message = "Message to Pass";
document.getElementById(''__EVENTTARGET'').value = message;
} catch (err) {
alert(err.message);
}
}
Función lateral del servidor C #
protected void _Submit_Click(object sender, EventArgs e)
{
// Hidden Value after postback
string hiddenVal= Request.Form["__EVENTTARGET"];
}
¡Espero que esto ayude!
En lugar de usar una Label
usa una entrada de texto:
<script type="text/javascript">
onChange = function(ctrl) {
var txt = document.getElementById("<%= txtResult.ClientID %>");
if (txt){
txt.value = ctrl.value;
}
}
</script>
<asp:TextBox ID="txtTest" runat="server" onchange="onChange(this);" />
<!-- pseudo label that will survive postback -->
<input type="text" id="txtResult" runat="server" readonly="readonly" tabindex="-1000" style="border:0px;background-color:transparent;" />
<asp:Button ID="btnTest" runat="server" Text="Test" />
La información de la etiqueta se almacena en la entrada de ViewState en la devolución de datos (tenga en cuenta que el servidor no sabe nada de la página fuera de los valores del formulario publicados atrás, que incluye el texto de su etiqueta). De alguna manera, tendría que actualizarla en el lado del cliente para saber qué cambió en esa etiqueta, que supongo que no valdría la pena.
No estoy completamente seguro de qué problema estás tratando de resolver aquí, pero esto podría darte algunas ideas de cómo hacerlo:
Puede crear un campo oculto para acompañar su etiqueta, y cada vez que actualice su etiqueta, también actualizará ese valor ... luego, en el código que se encuentra detrás, establezca la propiedad de Texto de la etiqueta como lo que estaba en ese campo oculto .
Usa el siguiente código
<span id="sptext" runat="server"></span>
Script de Java
document.getElementById(''<%=sptext''%>).innerHTML=''change text'';
DO#
sptext.innerHTML