Kiedy próbujesz się zarejestrować i zachować coś pustego / nie wypełnionego, otrzymasz błąd. (z PHP). Pola wejściowe, w których coś zostało wypełnione pobytami (Smarty: {if isset($smarty.post.registratie.naam)} value="{$smarty.post.registratie.naam}"{else}value="Naam:"{/if})

Problem: Po nieudanej próbie rejestracji wartość domyślna wartość moich pól wejściowych, która była pierwsza "Naam:", "Voornaam:", "E-mail:" został zmieniony na wartość, w której wprowadził użytkownik. (Na przykład "Frederik ")

Przykład: http://www.pixsters.be/index.php?page=registratie.

Z moim kodem jQuery wyczyść pola, w których istnieje wartość domyślna, chociaż nie chcę usunąć pola, które zostały wypełnione przez użytkownika.

Kod jQuery:

function clearField(e)
{
    if($(this).val() == this.defaultValue)
    {
        $(this).val('');
    }

}

function resetField(e)
{
    if($(this).val() == '')
    {
        this.value = this.defaultValue;
    }
}
0
Warre Buysse 14 sierpień 2012, 23:15

2 odpowiedzi

Najlepsza odpowiedź

Problem polega na tym, że gdy nowa strona jest załadowana, wprowadzone wartości stały się defaultValue s. Zamiast tego można użyć atrybutu placeholder (istnieją również wtyczki dla starszych przeglądarek):

<input placeholder="Naam:" ...>

To automatycznie dbają o zniknięcie podczas pisania czegoś bez JavaScript, i nie cierpi na twoją kwestię.

Prawdopodobnie chcesz zachować to czarny:

/* add other prefixes if necessary */
input::-webkit-input-placeholder { color: black; }
0
pimvdb 14 sierpień 2012, 19:36

Myślę, że to zły projekt projektowania interfejsu, aby ukryć tytuły polowe. W pewnym momencie użytkownik nie będzie mógł powiedzieć, na co niektóre pola są dla. Rozważyć, aby zmienić projekt.

Jeśli nadal chcesz się trzymać, dodać domyślne wartości do pól wejściowych, np.:

<form id="my-form">
    <input type="text" data-default-value="Enter your name:" name="name" value="{$form.name}">
</form>

$(document).ready(function() {
    // Iterating through all form elements.
    $.each('#my-form input[type="text"]', function() {
        // Adding event listener and calling it afterwards to fill the inputs initially.
        $(this).change(function() {
            var $Input = $(this);
            // If element value is not set (empty), then using default value.
            if ($Input.val() == '') {
                $Input.val($Input.attr('data-default-value'));
            }
        }).change();

    });
});
0
Slava Fomin II 14 sierpień 2012, 19:33