2017-12-29 5 views
2

Ich habe die folgenden Eingabefelder in einem Formular. Ich möchte undefiniert entfernen und durch ein Leerzeichen ersetzen "". Ich kann es nicht zur Arbeit bringen. Ich möchte nur "undefined" nicht ursprünglichen Wert entfernen.Wie ersetzen Sie einen bestimmten Wert eines Eingabefeldes mit jQuery?

<input type="hidden" name="address1" id="address1" value="Some address undefined" class="address1"> 

<input type="hidden" name="address2" id="address2" value="Another address undefined" class="address1"> 

Ich möchte nur undefined entfernen. Bisher habe ich versucht:

var str = $('input').value().replace(/undefined/g, 'ada'); 
$('input').value(str); 

und

$('input:contains("undefined")').each(function(){ 
    $(this).html($(this).html().split("undefined").join("")); 
}); 
+0

Diese versteckten Eingänge sind offensichtlich in einer Form verwendet und nicht angezeigt (dh: hidden ") - lassen so den undefinierten in und mit ihr am Ziel des Formulars beschäftigen (zB: in Die php-Seite, die das Formular übergibt seine Daten schneller als versuchen, den Wert Client-Seite zu ändern. – gavgrif

Antwort

1

Verwenden $('input').val() nicht $('input').value() mit jQuery ‚s each().

$('input').each(function(i, el){ 
 
    var str = $(el).val().replace(/undefined/g, ''); 
 
    console.log(str); 
 
    $('input').val(str); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="hidden" name="address1" id="address1" value="Some address undefined" class="address1"> 
 

 
<input type="hidden" name="address2" id="address2" value="Another address undefined" class="address1">

1

Sie verwenden value(), die nicht in der jQuery API vorhanden ist. Verwenden Sie stattdessen val(). Darüber hinaus sollten Sie jede Eingabe über each() durchlaufen und den einzelnen Eingang der aktuellen Iteration mit this anzielen.

$('input').each(function() { 
 
    var str = $(this).val().replace(/undefined/g, 'ada'); 
 

 
    $(this).val(str); 
 

 
    console.log(
 
    $(this).val() 
 
); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="hidden" name="address1" id="address1" value="Some address undefined" class="address1" /> 
 

 
<input type="hidden" name="address2" id="address2" value="Another address undefined" class="address1" />

+0

Danke dafür. Die Sache ist, es ersetzt den aktuellen Wert. Ich möchte nur "undefined" Nicht den gesamten Wert ersetzen – Mariton

+0

@Mariton Überarbeitete meine Antwort –

+0

Vielen Dank all diese Antworten waren hilfreich! – Mariton

0

Gerade

$('input').val(""); 

statt

var str = $('input').val().replace(/undefined/g, 'ada'); 
$('input').val(str); 
0

Sie müssen Schleife verwenden, um durch jede von ihnen each verwenden.

$('input').each(function(){ 
 
    $this = $(this); 
 
    $this.val($this.val().replace(/undefined/g, '')) 
 
    console.log('new value is : ', $this.val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="hidden" name="address1" id="address1" value="Some address undefined" class="address1"> 
 
<input type="hidden" name="address2" id="address2" value="Another address undefined" class="address1">

1

Verwenden .val(), nicht .value(). Sie können ihm eine Funktion als Argument geben. Diese Funktion wird mit dem alten Wert als Argument aufgerufen, und der Rückgabewert wird als neuer Wert verwendet (Sie müssen also nicht .each() wie in den anderen Antworten verwenden).

$("#click").click(function() { 
 
    $("input").val(function(i, oldvalue) { 
 
    return oldvalue.replace(/undefined/g, ''); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="address1" id="address1" value="Some address undefined" class="address1"> 
 

 
<input type="text" name="address2" id="address2" value="Another address undefined" class="address1"> 
 
<br> 
 
<button id="click">Click to change</button>

Verwandte Themen