Javascript Doppelpunkt ersetzen

berger_84

Grünschnabel
Huhu Leute

Bin leider nicht so geübt mit Javascript

Wen ich n Inputfeld hab und da bsp das hier eintrage

001AA0A1C77E

wie mache ich es das es automatisch in

00:1A:A0:A1:C7:7E

geändert wird?

Bzw wie ich es mache ist mir klar - hab mich bissel versucht - in anderen sprachen kein problem aber javascript - kp ;-) Wäre froh wen mir da vllt. einer auf die Sprünge helfen könnte oder mir ne Source hätte

Grüsse
Berger
 
Zuletzt bearbeitet:
Hi,

vielleicht helfen dir reguläre Ausdrücke weiter:
Code:
var strOut = "001AA0A1C77E".replace(/([0-9A-Fa-f]{2,2}\B)/g, function (strMatch, strBracket, strPos, strSrc){
  return strBracket+":";
});

alert(strOut);

Ciao
Quaese
 
Hi,

vielleicht helfen dir reguläre Ausdrücke weiter:
Code:
var strOut = "001AA0A1C77E".replace(/([0-9A-Fa-f]{2,2}\B)/g, function (strMatch, strBracket, strPos, strSrc){
  return strBracket+":";
});

alert(strOut);

Ciao
Quaese

Perfekt - danke! Genau das was ich gesucht hab :)

Könntest du vielleicht noch so freundlich sein und mir kurz sagen was der Code da genau macht?

Wie gesagt - blick da nicht durch :) Meine Welt ist .net ;)
 
Hi,

nach nochmaligem Drübersehen - es geht sogar noch kürzer:
Code:
var strOut = "001AA0A1C77E".replace(/([0-9A-Fa-f]{2,2}\B)/g, "$1:");

Gesucht wird mit einem sogenannten regulären Ausdruck nach zwei aufeinanderfolgende gültige Hex-Ziffern
Code:
/([0-9A-Fa-f]{2,2}\B)/g
Der Zusatz g bewirkt, dass der komplette String durchsucht wird und nicht nach dem ersten Vorkommen abgebrochen wird.

Durch die Klammerung steht die gefundene Stelle für das zweite Argument in $1 zur Verfügung. Dort wird die gefundene Stelle durch den Doppelpunkt erweitert und im Zielstring ersetzt.

Mehr zur Methode replace findest zum Beispiel hier.

Ciao
Quaese
 
Sorry wenn ich den Thread nochmal ausgrabe, bin aber mal wieder so weit das ich's ein wenig angepasst brauchen könnte.

Wie bringe ich das ganze mit JS so hin, dass bei CTRL-V in einem Formular das ganze ausgelöst wird?

Ich hab mich mal daran versucht, komm aber nicht wirklich sehr weit.... Ich hab es halbwegs hinkriegt die übergabe zu machen. Dies aber auch nur so halbwegs.

Ich hab genügend Programmierkentnisse aber JS ist und bleibt bisher ein unversuchter Teil für mich...

HTML:
<form name="restrictform" action="submit_werte.php" method="post">
              <input type="text" name="mac" id="name" size="17" maxlength="17">
</form>

Ich will es einfach mit der obigen funktion irgendwie erreichen das ich dort BSP: 001AA0A1C77E eingebe und JS mir automatisch 00:1A:A0:A1:C7:7E einfügt

Ich hab halbwegs etwas auf die reihe gestellt mit Onpaste und so... Wie gesagt, geht aber nur halbwegs :D
 
Moin,

erstmal:onpaste ist sicher ein guter Ansatz, würde ich auch nehmen...allerdings ist das kein "offizieller" Event, unterstützen tun dies nur IE+FF

Wichtig dabei: onpaste feuert bereits, bevor der Inhalt des Zieles geändert wurde, du müsstest da also eine kleine Verzögerung einbauen.

Für andere Browser empfehle ich der Faulheit halber mal eine externe Quelle : http://forum.de.selfhtml.org/archiv/2006/6/t130895/
 
Danke dir schon mal im voraus.

Das mit dem zu früh feuern hab ich eben auch bemerkt, da bin ich dann hängen geblieben.

Wenn du mir sagen könntest wie ich die kleine verzögerung im IE beim Onpaste reinkriege, wär ich schon zufrieden. Das zeugs wird nur im Intranet bei uns zur verfügung gestellt und für das Intranet nutzen wir ausschliesslich den IE.

Von daher wär mir das schon zureichend wenn ich die Pause hinkriegen würde :)
 
Perfekt, danke dir.

Hab's jetzt so gelöst

HTML:
<html>
  <head>
    <title>test</title>
  </head>
  <body>
  <form name="restrictform" action="submit_werte.php" method="post">
    <input type="text" name="mac" id="name" size="17" maxlength="17" onpaste="setTimeout('replace(document.getElementById(\'name\').value)', 100)"/>
  </form>
  </body>
</html>



<script type="text/javascript">



function replace(value) {
var strOut = value.replace(/([0-9A-Fa-f]{2,2}\B)/g, function (strMatch, strBracket, strPos, strSrc){
  return strBracket+":";
});

document.getElementById('name').value = strOut;

}


</script>
 
Da dies ausschliesslich für den IE ist, hier noch eine andere, wahrscheinlich bessere Möglichkeit

Es gibt ja viele Möglichkeiten, den value eines Textfeldes zu Ändern(cut,paste, reset,Tastatureingabe)

Und im IE gibt es einen Event, der alles abdeckt, onpropertychange :)

Code:
<script type="text/javascript">
<!--
function fx()
{
  if(event.propertyName=='value')
  {
    alert('der value wurde geändert');
    //.....manipulation des values
  }
}
//-->
</script>
<textarea onpropertychange="fx()" rows="8"></textarea>
 

Neue Beiträge

Zurück