2011-01-04 21 views
15
$(".box_yazi2").each(function() { 
    var default_value = this.value; 
    $(this).css('color', '#555'); // this could be in the style sheet instead 
    $(this).focus(function() { 
     if (this.value == default_value) { 
      this.value = ''; 
      $(this).css('color', '#000'); 
     } 
    }); 
    $(this).blur(function() { 
     if (this.value == '') { 
      $(this).css('color', '#555'); 
      this.value = default_value; 
     } 
    }); 
}); 

Diese Funktion Standardwert Eingang funktioniert nicht in FF, aber funktioniert perfekt in IE und natürlich der Eingang selbst sieht wie folgt aus:Standardwert eines Eingangs Get jQuery

<input type="text" class="box_yazi2" id="konu" name="konu" value="Boş" /> 
+6

Warum verwenden Sie 'this.defaultValue' nicht? – jensgram

+2

Die letzte Zeile ist eine zusätzliche Menge von '});'. Wird das nur falsch kopiert? –

+0

ich weiß nicht, wird es helfen? –

Antwort

9

Die Lösung ist ziemlich einfach; Sie haben ein extra }); in Ihrem Code (danke @ Box9).

Ich würde Sie ermutigen, die Variable wiederzuverwenden und nicht Dutzende von jQuery-Objekten zu erstellen.

Ich habe Ihr Beispiel in background-color geändert, aber es wird funktionieren.

$('.box_yazi2').each(function(index, element) { 
    var $element = $(element); 
    var defaultValue = $element.val(); 
    $element.css('background-color', '#555555'); 
    $element.focus(function() { 
     var actualValue = $element.val(); 
     if (actualValue == defaultValue) { 
      $element.val(''); 
      $element.css('background-color', '#3399FF'); 
     } 
    }); 
    $element.blur(function() { 
     var actualValue = $element.val(); 
     if (!actualValue) { 
      $element.val(defaultValue); 
      $element.css('background-color', '#555555'); 
     } 
    }); 
}); 

demo

63

Verwenden Sie einfach die defaultValue Eigenschaft:

var default_value = $(this).prop("defaultValue"); 

Oder:

var default_value = this.defaultValue; 
+0

sollten Sie Ihr Beispiel erarbeiten. Derzeit gibt es kein Attribut 'defaultValue' –

+17

defaultValue ist ein integriertes Attribut, das über JavaScript zugänglich ist. Für Eingabe [type = text] enthält es den ursprünglichen Wert des Eingabeelements ... den Wert, der beim Laden der Seite vorhanden war. –

+0

@Salman A: Ahh danke !! interessant! –

1

ich den nächsten Code verwendet:

//clear the focused inputs 
$('input[type="text"]').focus(function(){ 
    if($(this).attr('value') == $(this).attr('defaultValue')){ 
     $(this).attr('value', ''); 
    }; 
}); 
$('input[type="text"]').blur(function(){ 
    if($(this).attr('value') == ''){ 
     $(this).attr('value', $(this).attr('defaultValue')); 
    }; 
}); 
+1

Sie sollten '.attr ('value', ...)' '' '.val (...)' nicht verwenden, um den Wert eines Elements zu ändern! – ThiefMaster

+0

Sie haben recht, '.val() '' ist kürzer! :) – Sirozha

1

Verwenden this.defaultValue

Sorry für den Link zu w3notcools, http://www.w3schools.com/jsref/prop_text_defaultvalue.asp

+3

w3schools ist eine [schreckliche Ressource] (http://w3fools.com). Eine bessere Referenz wäre https://developer.mozilla.org/en-US/docs/DOM/HTMLInputElement#Properties – ThiefMaster

+2

ThiefMaster, ich habe viel gelernt dank w3schools und ich kann deine Ansicht nicht teilen, dass es eine "schreckliche Ressource" ist ". Nur weil es bessere und detailliertere oder fortschrittlichere Ressourcen als die erwähnte Website gibt, macht das kein "schreckliches". Auch die Tatsache, dass sie nichts mit dem W3C haben oder dass jemand eine Website erstellt hat, um sie zu verprügeln - bedeutet nichts über ihre "Grausamkeit". Um die Wahrheit zu sagen - W3C selbst hatte so viele schreckliche Lösungen/Entscheidungen, dass sie die letzten sind, die andere Leute/Firmen schlagen. – userfuser

+0

@userfuser http://meta.stackexchange.com/questions/87678/discouraging-w3schools-as-a-resource –

2
$('input[type="text"]').focus(function(){ 
      elementValue = $(this).val(); 
      $(this).val(""); 
     }); 
     $('input[type="text"]').blur(function(){ 
      if($(this).val() != elementValue && $(this).val() != ""){ 

      }else{ 
       $(this).val(elementValue); 
      } 

     }); 
0

Sie prop statt so viele Funktionen um ehrlich zu sein verwenden sollten, verwenden Sie ‚delegieren‘ statt ‚auf‘ für späte statische Bindung .

$('.box_yazi2').each(function() { 

$(this).on('focus', function(){ 

    if($(this).val() == $(this).prop('defaultValue')){ 

     $(this).val(''); 
     $(this).css('color', '#000'); 
    } 

}); 

$(this).on('blur', function(){ 

    if($(this).val() == ''){ 

     $(this).val($(this).prop('defaultValue')); 
     $(this).css('color', '#000'); 
    } 

}); 

});