JavaScript Regex per restituire le ultime cifre e il gestore eventi ASP.Net?
-
06-07-2019 - |
Domanda
Data la seguente stringa: 's0 \\ 8 \\ 26 \\ 29 \\ 30 \\ 32' o 's0 \\ 8 \\ 26 \\' o 's0 \\ 5', devo restituire le ultime cifre della stringa.
Data:
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;
}
Inizialmente pensavo di aver bisogno solo delle prime cifre, ma alla fine ho bisogno delle ultime.
Quale sarebbe il termine regexp appropriato per questo?
Inoltre, come posso creare un gestore eventi ASP.Net per fare qualcosa con il valore JS restituito?
Soluzione
Potresti provare quanto segue. Dovrebbe seguire la formattazione e raggruppare l'ultimo set di numeri.
/s0\\\\(?:[0-9]+\\\\)*([0-9]+)/
Quindi, qualcosa del tipo:
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];
}
Per quanto riguarda l'evento ASP.NET, probabilmente dovrai usare Ajax, ad esempio <asp:UpdatePanel />
o la tua scelta della libreria Ajax (jQuery, Prototype, ecc.).
Senza Ajax, JavaScript e ASP.NET non verranno mai eseguiti contemporaneamente.
Altri suggerimenti
In questo modo puoi abbinare le ultime cifre di una stringa:
function getFolderId(str) {
var pattern = /([0-9]+)$/;
var result = pattern.exec(str);
return result ? result[1] : null;
}
Sulla questione della restituzione dei parametri Javascript al server ...
Ho creato due campi nascosti ASP.Net, quindi in JS, ho impostato i valori di questi campi ... voilà - disponibile dal mio code-behind:
// 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;
E
<asp:HiddenField ID="HidTreeContextAction" runat="server" />
<asp:HiddenField ID="HidTreeContextID" runat="server" />
Ora il flusso di lavoro è: 1) l'utente fa clic con il pulsante destro del mouse sul nodo dell'albero 2) appare il menu contestuale 3) selezionando una voce del menu contestuale si attiva il JS che imposta i valori nascosti 4) una finestra in stile ajax sembra accettare l'input dell'utente 5) invio di clic dell'utente 6) entrambi i parametri utilizzati determinano cosa / dove vanno i dati
Mi rendo conto che questo potrebbe essere un po 'un trucco e non usare AJAX. Se qualcuno si preoccupa di condividere come questo sarebbe fatto in stile Ajax, fantastico!
Ho pensato di condividere questa soluzione rapida nel caso in cui qualcun altro ne avesse bisogno.