Pregunta

Dada la siguiente cadena: 's0 \\ 8 \\ 26 \\ 29 \\ 30 \\ 32' o 's0 \\ 8 \\ 26 \\' o 's0 \\ 5', necesito regresar los últimos dígitos de la cadena.

Dado:

 function getFolderID(mystr) {
        var reFolderID = /\bs0\\\\[0-9]+\b/g //regexp to return s0\\34
        var retArr = [];
        var retval = '';

        retArr = mystr.match(reFolderID);
        retArr = retArr[0].replace(/s0\\\\/g, "");

        if (retArr != null) {
            retval = retArr[retArr.length - 1];
        }
        //alert("Ret: " + retval);
        return retval;
    }  

Al principio pensé que solo necesitaba los primeros dígitos, pero resulta que necesito los últimos.

¿Cuál sería el término de expresión regular apropiado para esto?

Además, ¿cómo puedo crear un controlador de eventos ASP.Net para hacer algo con el valor JS devuelto?

¿Fue útil?

Solución

Puede intentar lo siguiente. Debería seguir el formato y agrupar el último conjunto de números.

/s0\\\\(?:[0-9]+\\\\)*([0-9]+)/

Entonces, algo como:

function getFolderID(mystr) {
    // search string for last group of digits in the pattern
    var matches = mystr.match(/s0\\\\(?:[0-9]+\\\\)*([0-9]+)/);

    // if matches is null, replace with "defaults"
    matches ||= ["", ""];

    // grab the first grouped match
    return matches[1];
}

En cuanto al evento ASP.NET, es probable que tenga que usar Ajax, como por <asp:UpdatePanel /> o su elección de la biblioteca Ajax (jQuery, Prototype, etc.).

Sin Ajax, JavaScript y ASP.NET nunca se ejecutarán al mismo tiempo.

Otros consejos

Puede hacer coincidir los últimos dígitos de una cadena de esta manera:

function getFolderId(str) {
    var pattern = /([0-9]+)$/;
    var result = pattern.exec(str);
    return result ? result[1] : null;
}

Sobre la cuestión de devolver los parámetros de Javascript al servidor ...

Creé dos campos ocultos ASP.Net, luego en JS, establecí los valores de estos campos ... voila - disponible desde mi código subyacente:

    // set .net hidden control values so they're server-side accessible
    document.getElementById('ctl00_ContentPlaceHolderMainBody_HidTreeContextAction').value = buttonAction;
    document.getElementById('ctl00_ContentPlaceHolderMainBody_HidTreeContextID').value = buttonFolder;

Y

<asp:HiddenField ID="HidTreeContextAction" runat="server" />
<asp:HiddenField ID="HidTreeContextID" runat="server" />

Ahora el flujo de trabajo es: 1) el usuario hace clic derecho en el nodo del árbol 2) aparece el menú contextual 3) al seleccionar un elemento del menú contextual se activa el JS que establece los valores ocultos 4) la ventana de estilo ajax parece aceptar la entrada del usuario 5) clics de usuario enviar 6) ambos parámetros utilizados determinan qué / dónde van los datos

Me doy cuenta de que esto puede ser un poco pirateo y no usar AJAX. Si a alguien le interesa compartir cómo se haría esto al estilo ajax, ¡genial!

Solo pensé en compartir esta solución rápida en caso de que alguien más la necesite.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top