#jquery #asp.net #webforms
#jquery #asp.net #веб-формы
Вопрос:
В веб-форме у меня есть несколько полей ввода
<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>
Поскольку фокус теряется на элементе управления, введенное значение необходимо вернуть в 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 с надписью results. Что я хочу сделать, так это вместо добавления имени поля и значения к элементу DIV я хочу, чтобы они были добавлены к элементу управления asp: textbox.
Предпочтительнее хранить этот код во внешнем 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: textbox именем и значением поля ввода.
Пример Field1:foo Field2:somevalue2 Field3:somevalue3 …
Комментарии:
1. Можете ли вы добавить HTML, который создает элемент управления на стороне сервера?
2. В чем именно заключается проблема: получение значений из полей ввода или установка значений в ASP.NET Элемент управления текстовым полем? Если он последний, то где элемент управления Textbox?
3. @Pbirkoff проблема, с которой я сталкиваюсь, заключается в том, что мне нужна возможность предоставлять значения из полей ввода html в элемент управления asp: textbox. Я обновил вопрос для большей ясности
Ответ №1:
Это не 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());
}
});
Комментарии:
1. Да, вы правы, Джеймс. элементы управления являются стандартными элементами ввода html, они необходимы для предоставления asp.net управление, чтобы вы были правы, я перехожу от ввода к asp: textbox. Извините, что не уточнил это в вопросе
2. Я использовал name, поскольку я также хотел добавить имя поля со значением. Вы предложили использовать ID вместо name по любой причине или просто по личным предпочтениям. Спасибо
3. Это зависит от вас, но идентификатор является нормой в большинстве случаев.
4. Джеймс, я попробовал ваше решение, но оно добавляет только одно значение. Мне нужно перейти к табуляции в каждом поле и добавить значение в текстовое поле. Чтобы он построил строку. (Поле 1: значение поле 2: значение ….) Я пытался использовать append (), но, похоже, это не сработало. Использование значения val помещает только одно значение в текстовое поле, любые предложения.
5. Только что обновил последний пример. Заметил, что у вас есть
forminput
класс вокруг входных данных.