TextBox теряет текст, когда я скрываю его с помощью jquery

Я использую Jquery, чтобы скрыть текстовое поле и показать его, когда пользователь нажимает кнопку

Скрывать:

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

Показывать:

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

Все работает нормально. Но в Google Chrome текстовое поле теряет свою ценность. если пользователь вводит текст, затем скрывает его и показывает снова, текстовое поле пусто.

Это происходит только в гугл хром. В фаерфоксе и эксплорере работает нормально

Любая идея об этом?

Спасибо

РЕДАКТИРОВАТЬ: есть кое-что, что я забыл упомянуть, это то, что я скрываю 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 называется textbox1, но он содержит текстовое поле. Я скрываю/показываю 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, и мы не знаем, какой именно его идентификатор/класс (если есть) будет быть

person e wagness    schedule 13.04.2012