2016-05-14 5 views
1

Ich suche jetzt eine Weile ohne Ergebnisse, also habe ich beschlossen, euch zu fragen. :)jQuerys .val() setzt den bootstrap-input-Wert nicht

Ich habe einige Bootstrap-Eingänge wie:

<input class='form-control' id='start_name' /> 
<input class='form-control' id='end_name' /> 

Normaly würde ich Daten wählen wie

var myValue = $('#start_name').val(); 

Das Problem ich habe, ist, möchte ich ein Element wählen eine bestimmte Zeichenfolge enthält dass wird vor wie gesetzt:

$('#start_name').val('foobar'); 

Offensichtlich .val() nicht Sätze th Der Wert des Eingabefeldes. Ich habe extra eine Zeile wie

$('#start_name').attr('value', 'foobar'); 

hinzufügen oder kombinieren Sie es wie

$('#start_name').val('foobar').attr('value', 'foobar'); 

Der actuall Code, den ich das entsprechende Element verwenden möchten, auszuwählen und zu entleeren ist:

$("input[value='" + theSpecifiedValue + "']").val(''); 

(Wählen Sie Input from X inputs, das die Zeichenfolge enthält)

Aber da ich bootstrap benutze muss ich explizit zu müssen Setzen Sie den Wert mit .attr()

Gibt es einige im fehlen oder ist dies die einzige Möglichkeit, es zu tun?

Here is a Fiddle

+0

nur ein Element auswählen, das eine angegebene Zeichenfolge dann entleeren suchen ?? –

+0

@ShadyAlset Ja. Eigentlich ist es eine Canvas-Element-Map, bei der ein Benutzer einen gezeichneten Knoten auswählen kann, indem er in die Karte klickt. Dies füllt einen Wert in ein Eingabefeld. Wenn er es erneut auswählt, sollte das Eingabefeld leer sein. Da es zwei Eingänge gibt, sollte das Skript prüfen, in welchem ​​der ausgewählte Knotenname erscheint und diesen dann leeren. Natürlich mit weniger Code als möglich :) – Dwza

+0

Danke für die Erklärung, verweisen Sie meine Antwort Ich hoffe, es ist was Sie brauchen. –

Antwort

2
  1. wenn Sie $('#start_name').val('here') verwenden und $('#start_name').prop('value','here')wird die Zuordnung der Wert this.value

    $('#start_name').val(); // here

    und

    mit Wert suchen
    $('body input').filter(function() { return this.value == 'here' }).val('gone'); 
    
  2. $('#start_name').attr('value', 'here1');setzt den Wert in dies.Attribute

    $('#start_name').attr('value'); // here1

    und mit dem Wert

    $("body").find("input[value='here1']") 
    
+0

Ich denke, die erste Lösung ist was ich suche. eigentlich ist das zweite was ich gerade mache. Aber ich muss auch die Ansicht einstellen und nicht nur das Attribut. – Dwza

-1

$(function() { 
     $("body").find("input[value='" + theSpecifiedValue + "']").val(''); 
}); 
+0

sorry, das gleiche Ergebnis wie $ '(" input [value = '"+ theSpecifiedValue +' ']"). Val (' '); 'Ich habe gerade eine Geige hinzugefügt :) – Dwza

1

Bit von Umwegen versuchen, aber wir können

$($.grep($("body").find("input"),function(e,i){ return e.value === myValue })).val('gone');

jQuery Selektoren die wörtliche HTML auszuwählen tun. Wenn Sie einen Wert mit .val() festlegen, wird die Eigenschaft "Wert" des HTML-Objekts festgelegt. Es setzt nicht den Literaltext im HTML, den jQuery mit seinem Selektor verwendet. Stattdessen greifen wir alle Eingaben auf und geben eine Liste von Elementen zurück, deren Eigenschaft "value" mit unserer Suchzeichenfolge übereinstimmt. Anstatt grep zu verwenden, könnten Sie eine for-Schleife, eine Map usw. verwenden und die Suche wahrscheinlich schneller machen.

+1

Ihre Lösung ist richtig, aber Pavans Lösung ist ein bisschen kürzer. Wirklich das gleiche, aber die verwendete Jquery sieht ein bisschen besser :) immer noch eine +1 von hier und ich hoffe, dass alle Leute, die diesen Beitrag lesen, wird dies auch stimmen. – Dwza