2011-01-06 8 views
1

So habe ich ein Eingabefeld, das nur einen Dollar-Wert ausgenommen wird. Basierend auf dem Dollar-Wert möchte ich, dass ein div Informationen austauscht. Im Grunde muss ich also einem Inhalt einen Wertebereich zuordnen, basierend auf dem Eingabewert, und den Inhalt bei Unschärfe tauschen. Unten ist Code, der nicht funktioniert, aber irgendwie gibt Ihnen eine Idee, was ich zu erreichen versuche. Jede Hilfe wird geschätzt.Abhängen von Informationen basierend auf Texteingabewert

<input type="text" /> 

$(function(){ 

var low = 5 
    mid = 10 
    high = 15 
    val = $('input').val() 

if (val >= low && val < mid){ 
val.blur(function() { 
    val.append('<div>You cheapo!</div>'); 
}); 

} 

if (val >= mid && val < high){ 
val.blur(function() { 
    val.append('<div>You middle class folk!</div>'); 
}); 
} 

if (val >= high){ 
val.blur(function() { 
    val.append('<div>Woah baller!</div>'); 
}); 

} 

}); 
+0

die einzige Problem, das Sie wirklich hatten, war, dass Sie den Eingabewert als ein jquery-Objekt verwendeten. –

Antwort

2

Zunächst müssen Sie, bis die blur Ereignis ausgelöst wird, warten, bevor die immer Wert des Eingangs val. Zweitens möchten Sie nur auf ein Unschärfen-Ereignis reagieren und dann Ihre Logik ausführen, also richten Sie das zuerst ein. Sobald Sie den Wert haben, können Sie Ihre Logik verwenden, um die text innerhalb eines anderen div zu setzen, anstatt einen neuen im laufenden Betrieb zu erstellen.

Dies ist, was ich denke, Sie Code wie zu arbeiten, um aussehen sollte:

$(function() { 
    var low = 5, 
     mid = 10, 
     high = 15; 

    function getText(val) { 
     if (val >= low && val < mid) 
      return 'You cheapo!' 
     else if (val >= mid && val < high) 
      return 'You middle class folk!' 
     else if (val >= high) 
      return 'Woah baller!' 
     else 
      return 'Out of range' 
    } 

    $('input').blur(function() { 
     var val = $(this).val(); 
     $('#target').text(getText(val)); 
    }); 
}); 

und hier ist ein Beispiel davon in Aktion:

DEMO:http://jsfiddle.net/marcuswhybrow/gKBUr/5/

+0

Ich denke, dass die verschachtelten ternären Operatoren die Lesbarkeit viel mehr verletzen, als sie in diesem Fall helfen, zumal es scheint, dass Chad nicht mit JavaScript oder Programmierung im Allgemeinen vertraut ist. Ich würde die Nachricht in einer Variablen mit Standard-'if'-Anweisungen setzen und dann den Wert am Ende des Funktionsaufrufs zuweisen. –

+0

@Alex Guter Punkt, schlecht machen es lesbarer –

+0

@Marcus: +1. Mit den Änderungen denke ich, dass es die beste Antwort ist. Es tut genau das, wonach er fragt, und sollte ziemlich leicht zu sezieren sein. –

0

Sie versuchen die .blur() Ereignis auf den Wert der Textbox zu binden. Binden Sie es an das Textfeld selbst.

So etwas wie

var obj = $("input"); 


obj.blur(function(){ 
    // do your code 
}); 

Und Sie können .before() oder .after() verwenden, um die div zu zeigen.

obj.after("<div/>"); 

Nicht getestet.

$(function() { 
    var low = 5; 
    var mid = 10; 
    var high = 15; 
    var inp = $('input'); 
    var val = inp.val(); 

    if (val >= low && val < mid) { 
     inp.blur(function() { 
      inp.after('<div>You cheapo!</div>'); 
     }); 
    } 

    if (val >= mid && val < high) { 
     inp.blur(function() { 
      inp.after('<div>You middle class folk!</div>'); 
     }); 
    } 

    if (val >= high) { 
     inp.blur(function() { 
      inp.after('<div>Woah baller!</div>'); 
     }); 
    } 
}); 
0

Nicht wirklich sicher, wo Sie anfangen, andere zu helfen, als zeigen, wie es getan werden könnte ...

$('input').blur(function() { 
    var low = 5; 
    var mid = 10; 
    var high = 15; 
    var val = $(this).val(); 

    if (val >= low && val < mid){ 
     $('#div-you-want-it-to-appear-in').html('<div>You middle class folk!</div>'); 
    } 

    if (val >= mid && val < high){ 
     $('#div-you-want-it-to-appear-in').html('<div>You middle class folk!</div>'); 
    } 

    if (val >= high){ 
     $('#div-you-want-it-to-appear-in').html('<div>You middle class folk!</div>'); 
    } 

}); 
+0

Sie tun den gleichen Pit fallen wie er, Sie verwenden den Wert der Eingabe als jquery Objekt lol –

+0

wo verwende ich 'val' als jQuery-Objekt? – jondavidjohn

Verwandte Themen