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; 
     } 
    }); 
}); 

Ta funkcja wartości domyślnej robi praca wejście w FF, ale doskonale działa w IE i oczywiście samo wejście wygląda następująco:Uzyskaj domyślną wartość wejścia przy użyciu jQuery

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

Dlaczego nie użyjesz 'this.defaultValue'? – jensgram

+2

Ostatnia linia to dodatkowy zestaw '});'. Czy jest to po prostu niepoprawnie skopiowane? –

+0

Nie wiem, czy to pomoże? –

Odpowiedz

9

Rozwiązanie jest dość łatwe; masz dodatkowy kod }); (dzięki @ Box9).

Zachęcam do ponownego użycia zmiennej i nie tworzenia kilkudziesięciu obiektów jQuery.

Zmieniłem twój przykład na background-color, ale to zadziała.

$('.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

Wystarczy użyć właściwości defaultValue:

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

czyli

var default_value = this.defaultValue; 
+0

. obecnie nie ma atrybutu "defaultValue" –

+17

defaultValue jest wbudowanym atrybutem dostępnym przez JavaScript. Dla danych wejściowych [typ = tekst] zawiera oryginalną wartość elementu wejściowego ... wartość, która była obecna podczas ładowania strony. –

+0

@Salman A: ahh dzięki! ciekawy! –

1

Używam następny kod:

//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

Nie należy używać '.attr ('value', ...)', ale '.val (...)', aby zmienić wartość elementu! – ThiefMaster

+0

Masz rację, '.val() '' jest krótsze! :) – Sirozha

1

Zastosowanie this.defaultValue

Przepraszamy za link do w3notcools, http://www.w3schools.com/jsref/prop_text_defaultvalue.asp

+3

w3schools to [koszmarny zasób] (http://w3fools.com). Lepszym odniesieniem byłby https://developer.mozilla.org/en-US/docs/DOM/HTMLInputElement#Properties – ThiefMaster

+2

ThiefMaster, Dużo się nauczyłem dzięki w3schools i nie mogę podzielić się twoim zdaniem, że jest to "okropny zasób ". Tylko dlatego, że istnieją lepsze i bardziej szczegółowe lub bardziej zaawansowane zasoby niż wspomniana strona internetowa, nie czyni to "strasznym". Również fakt, że nie mają one nic wspólnego z W3C lub że ktoś stworzył stronę internetową, aby je przeskoczyć - nie ma znaczenia, co do ich "potworności". Prawdę mówiąc - sami W3C mieli tak wiele okropnych rozwiązań/decyzji, że są ostatnimi, którzy biją inne osoby/firmy. – 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

Należy użyć prop zamiast tak wielu funkcji, aby być uczciwym, stosowanie „delegat” zamiast „o” na koniec statyczne wiązanie .

$('.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'); 
    } 

}); 

}); 
Powiązane problemy