TextBox губи текст, когато го скрия с jquery

Използвам Jquery, за да скрия текстово поле и да го покажа, когато потребителят щракне върху бутон

Крия:

$('#TextBox1').hide();

Покажи:

$('#TextBox1').show();

Всичко работи добре. Но в google chrome текстовото поле губи своята стойност. ако потребителят въведе текст, след това го скрие и го покаже отново, текстовото поле е празно.

Това се случва само в google chrome. На firefox и explorer работи добре

Някаква идея за това?

Благодаря

РЕДАКТИРАНЕ: Има нещо, което забравих да спомена е, че крия DIV, който съдържа текстовото поле, а не самото текстово поле тук е Jcode

    $("#EditName").click(function (event) {
        event.preventDefault();
        $("#TextBoxDIV").show();
    }
    $("#HideName").click(function (event) {
        event.preventDefault();
        $("#TextBoxDIV").hide();
    }

и текстовото поле

    <div id = "TextBox1" class="TextFieldEditSmaller">
        @Html.TextBoxFor(m => m.Name) //This is an MVC3 application
    </div>

EDIT2: Току-що забелязах, че текстът е там, но е скрит зад нещо. ако натисна CTRL + A вътре в текстовото поле и след това копирам/поставя в бележника, се показва


person Youssef    schedule 13.04.2012    source източник
comment
Можете ли да публикувате повече от вашия код. Стойността не трябва да изчезва.   -  person C0D3    schedule 14.04.2012
comment
Имате ли конкретен тестов случай за него? Някакъв допълнителен HTML код или JavaScript код към това?   -  person blocco    schedule 14.04.2012
comment
Вашето текстово поле е div?   -  person j08691    schedule 14.04.2012
comment
добре, div се нарича текстово поле1, но съдържа текстово поле. Скривам/показвам div, но текстовото поле в него губи своята стойност   -  person Youssef    schedule 14.04.2012
comment
Google и MS се държат смешно, когато са поставени заедно :) Защо event.preventDefault(); предотвратявате балонче за събития? защо така ? Това означава, че имате повече (функционалност), прикрепена към него някъде   -  person sakhunzai    schedule 14.04.2012
comment
Да, това беше event.preventDefault();, което причиняваше проблема. добавете го като отговор, така че го приемам   -  person Youssef    schedule 14.04.2012


Отговори (2)


Работи ми перфектно.

Това е кодът, който използвам:

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<textarea>test</textarea>
<button>Hide</button><button>Show</button>

<script type="text/javascript">
$("button:first").on("click", function(json) {
    $("textarea").hide();
})
$("button").eq(1).on("click", function(json) {
    $("textarea").show();
})
</script>

Може би публикувате пълния си код, за да можем да определим какъв е проблемът ви?

person Jonny Burger    schedule 13.04.2012

без да виждате действителния си html код, трудно е да се каже, но това, което можете да направите, е да опитате да скриете действителното текстово поле след това div, като направите нещо като:

$("#HideName").click(function (event) {
    event.preventDefault();
    $("#TextBoxDIV").children(":first-child").hide();
    $("#TextBoxDIV").hide();
}

и ако това не работи, можете да съхраните текста с помощта на помощната програма за данни на jquerys http://api.jquery.com/jQuery.data/

и след това попълнете отново текстовото поле при показване. достъп и задаване на текстовото съдържание на html елемент чрез http://api.jquery.com/text/ забележка: причината, поради която използвах .children(":first-child") е, че вашето mvc3 приложение ще бъде преведено в html и ние не знаем какъв точно ще бъде неговият id/class (ако има такъв) да бъде

person e wagness    schedule 13.04.2012