2017-10-27 6 views
1

Ich Auswahl null oder mehr Elemente in jQuery den folgenden Selektor:Get Value von Stromselektors

$("input[type=tel]") 

Ich möchte den Wert des jeweiligen DOM-Element ändern, die ausgewählt wird, so habe ich versucht, zu verwenden, :

$("input[type=tel]").val($(this).val().replace(/D/, "")); 

Aber es Streifen statt nur die nicht-Ziffern den gesamten Text aus, der mich annehmen macht, dass $(this) auf das Element bezieht, die den Code (in meinem Fall ein Formular, das onSubmit ruft) ruft .

aktualisiert

will ich nicht den $ .each() Methode verwenden, wie in den Kommentaren vorgeschlagen und ich war unter Verwendung einer Inline-Funktion, um eine Lösung zu finden, kann wie hier gezeigt:

$('input[type="tel"]').val(function() {return $(this).val().replace(/\D/g, "");}); 
+2

Sie könnten nach suchen: https://api.jquery.com/each/ – vicbyte

+0

Ich möchte nicht diese Umsetzung in einem $ .each(), aber wenn nötig, dann werde ich. – David

+0

Nur neugierig, aber warum hast du 'this.value.replace (...)' nicht benutzt, anstatt einen Aufruf von '$ (this) .val()'? –

Antwort

2

Verwenden Sie ein Funktionsargument. Es wird für jedes ausgewählte Element mit dem aktuellen Wert als Argument aufgerufen (Sie müssen also nicht $(this).val() aufrufen), und der zurückgegebene Wert wird als Wert verwendet.

$("input[type=tel]").val(function(oldval) { 
    return oldval.replace(/\D/g, ''); 
}); 
+0

Diese Lösung ist nicht identisch mit der Bearbeitung von OP. '' 'Sollte der reguläre Ausdruck'/\ D/'sein, um mit der Frage konsistent zu sein. ('\ D' ist die Schreibweise eines regulären Ausdrucks für ein Zeichen ohne Ziffern). Ich habe jetzt keinen Einfluss auf die wirkliche Lösung, einen Verschluss zu verwenden, aber es fühlt sich "aus" an, als es sich in ein buchstäbliches "D" geändert hat. –

+0

Ich habe nicht bemerkt, dass er '/ D /' in '/ \ D/g' in seinem Schnitt geändert hat. – Barmar

+0

Vielen Dank für die Antwort, aber warum in der Welt bearbeiten Sie meine Beiträge weiter? Es ist sehr abstoßend. – David