добавить текст в элемент управления текстового поля asp.net с помощью jQuery - PullRequest
3 голосов
/ 10 ноября 2011

В веб-форме у меня есть несколько полей ввода

<div id="search1">
        <div class="forminput">
            Label 1<br />
            <input type="text" name="Field1" value="" size="20" />
        </div>
        <div class="forminput">
            Label 2<br />
            <input type="text" name="Field2" value="" size="20" />
        </div>
</div>

Поскольку фокус теряется на элементе управления, введенное значение необходимо вернуть в элемент управления textp asp.net.Я смог передать значения слою div или стандартному элементу html, используя следующий код:

    function fieldUpdate() {

            var currentValue = $(this).val();
            var field = $(this).attr("name");

                if (currentValue != "") {
                    $("#results").append(field + ":" + currentValue + "+");
                }
        }
 $(function () {
            $("#search1 :input[type=text]").focusout(fieldUpdate);

        });

Однако, похоже, это не работает с серверным элементом управления asp.net. Обновление Цель этого вопроса - предоставить значения, введенные в стандартные поля ввода html, в элемент управления asp: textbox

<asp:TextBox ID="results2" Text="" Width="400" runat="server" />

Обновление Ниже приведен скриншоткак работает текущее решение.Вверху вы видите поля ввода, когда пользователь вводит значение, и вкладки из каждого поля добавляют это значение к слою Div, помеченному как результаты.Я хочу вместо добавления имени поля и значения к элементу DIV добавить их в элемент управления asp: textbox.

enter image description here

Желательно, чтобы этот код хранился во внешнем js-файле, а не на странице aspx.

Может кто-нибудь дать какие-либо предложения о том, как этого добиться??

заранее спасибо

Обновление решения Спасибо Джеймсу за помощь в работе над этим.Ниже приведен код jQuery, используемый в текущей реализации.

function fieldUpdate() {

            var currentValue = $(this).val();
            var field = $(this).attr("name");
            var txt = $("#<%=results2.ClientID%>");
                if (currentValue != "") {
                    $("#results").append(field + ":" + currentValue + "+");
                    if (txt) {
                        txt.val(txt.val() + field + ":" + $(this).val() + "+");
                    }
                }
        }


        $(function () {
        //only evaluate input text field
            $("#search1 :input[type=text]").focusout(fieldUpdate);

Теперь это позволит заполнять текстовое поле asp: с именем и значением поля ввода.Пример Field1: foo + Field2: somevalue2 + Field3: somevalue3 ...

1 Ответ

12 голосов
/ 10 ноября 2011

Это не элементы управления ASP.NET TextBox;это ввод текста HTML.Чтобы ответить на ваш вопрос, вы должны сделать следующее:

<script type="text/javascript">
    $(function(){
        $("#input1").val("Hello world");
    });
</script>
<input type="text" id="input1" />

Я заметил, что вы задаете имя вместо идентификатора в вашем примере.Я бы использовал ID, если у вас есть выбор, но вы можете найти элемент по имени, например:

$("input[name='Field1']").val("Hello world");

Если вы используете реальный элемент управления ASP.NET TextBox, решение будет немного другим:

<script type="text/javascript">
    $(function(){
        $("#<%=TextBox1.ClientID%>").val("Hello world");
    });
</script>
<asp:TextBox ID="TextBox1" runat="server" />

Если вы хотите получить все текстовые вводы в search1 div, вы можете сделать это:

$(".forminput input[type='text']").val("Hello world!");

Вот jsFiddle для приведенного выше примера: http://jsfiddle.net/DWYTR/

РЕДАКТИРОВАТЬ

Вот ваш комментарий: как вы можете скопировать значение с одного входа на другой на blur:

$(".forminput input[type='text']").blur(function(){
    var txt = $("#<%=TextBox1.ClientID%>");
    if (txt){
        txt.val(txt.val() + $(this).val());
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...