JQuery получить значение скрытого текстового поля ASP.net

0

Эта проблема немного странная, и мне любопытно, есть ли у кого-нибудь представление о том, что происходит. Вы можете получить CSS, HTML и JS здесь, но поведение я вижу на моей локальной машине не то же самое, как и в скрипке. Цель заключалась в том, что пользователь будет нажимать на тег span внутри div, а модальный появится (что я еще не получил), и пользователь сможет редактировать и сохранять изменения. Вы можете видеть в функции обновления текстовое поле добавляется к #hidden. Хотя я никогда не устанавливал значение текстового поля, при нажатии тега span текстовое поле добавляется к элементу с (почти) всем значением скрытого поля ASP.net состояния представления. Я изменил идентификатор скрытого элемента на мусорное мышление, возможно, скрытый был плохим идентификатором, но я все равно получил тот же эффект. Кто-нибудь знает, что происходит?

EDIT: элемент "#hidden" - это то же самое, что полный код "#asdf":

<script type="text/javascript">
        $(document).ready(function () {
            var personArray = [{
                name: 'firstName',
                gender: 'male',
                age: 30
            }, {
                name: 'secondName',
                gender: 'female',
                age: 20
            }];

            //finds over object in the array and every property on that object
            //and makes a control out of it and styles is.
            function pretty(array) {
                var divArray = [];
                for (var i = 0; i < array.length; i++) {
                    var $div = $('<div>').addClass('person');
                    for (var prop in array[i]) {
                        var $span = $('<span>').text(prop + ': ' + array[i][prop]);
                        $div.append($span);
                    }
                    divArray.push($div);
                }
                return divArray;
            }

            $('body').append(pretty(personArray));

            $('.person span').click(function () {

                update($(this).parent());
            });
            function update(control) {
                var $spans = $(control).children('span');
                for (var i = 0; i < $spans.length; i++) {
                    $('#asdf').append($spans[i]).css('float', 'left');
                    var textBox = $('input').attr('type', 'textbox').css('float', 'right');
                    $('#asdf').append(textBox);
                }
                $('.updatePanel').fadeIn();
            }
            console.log('wEPDwUKLTIwNjAyODU4M2RkOhAAaDmHX8rBCXDQytiqIx94ch'.length);
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div id="asdf" style="float:right" class="updatePanel"></div>
    </div>



    </form>
</body>

1 ответ

2
Лучший ответ

На этой линии

var textBox = $('input').attr('type', 'textbox').css('float', 'right');

Вы, вероятно, захотите сделать:

var textBox = $('<input>').attr('type', 'textbox').css('float', 'right');

ViewState хранится в скрытом элементе ввода, и выполнение $ ("input") будет выбирать все элементы ввода на странице. Элемент ViewState, вероятно, является первым на странице.

  • 0
    Вот и все. Я использовал селектор вместо создания нового элемента, и он сделал единственный элемент ввода, который был на странице видимым. +1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню