#javascript #jquery #asp.net
#javascript #jquery #asp.net
Вопрос:
Я пишу код для печати значения текстового поля в другое текстовое поле, но я не могу этого добиться, может ли кто-нибудь сказать, что не так, или кто-нибудь может дать мне эквивалент JavaScript
для достижения этого
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jQuery/1.2.6/jQuery.min.js">
</script>
<script type="text/javascript">
$('#TextBox1').keyup(function(){
$('#TextBox2').val(this.value);
});
</script>
</div>
</form>
Комментарии:
1. Я не уверен, на что
this
там ссылается. Я бы проверил это.2. Когда вы «Просматриваете исходный код» на своей странице, как выглядят
<textarea>
значения «id»? Вы уверены, что ASP не дает им полные имена или что-то в этом роде?3. Кажется, у меня ничего не работает, я получаю
object excepted
могу ли я получить javascript, пожалуйста4. @Cobra_Fast вы можете быть полностью уверены, что
this
это будет ссылаться на элемент «TextBox1» в обработчике событий, потому что jQuery работает именно так.5. @Dorababu: asp: TextBox создает поле <тип ввода =’текст’>?
Ответ №1:
Я вижу две потенциальные проблемы. Один из них, как определили @Neal и @ Nicola, заключается в том, что вам нужно обернуть все, что ссылается на элемент DOM внутри
$(document).ready(funcution(){
// here
});
// or, this way, both are equivalent
$(function(){
});
Во-вторых, идентификатор, присвоенный вашим текстовым полям, скорее всего, НЕ TextBox1, а TextBox2. Это потому, что ASP.NET генерирует уникальные идентификаторы для клиентской стороны. Скорее всего, они будут выглядеть примерно так:
ctl00_TextBox1
или что-то подобное. Проверьте сгенерированный HTML-код вашей страницы для подтверждения. Кроме того, я обнаружил, что консоль JavaScript плагина Firebug FireFox или инструменты разработчика Chromes очень полезны для определения, действительно ли мой селектор jQuery возвращает что-либо. Просто откройте консоль в одном из этих браузеров и выполните:
$('#TextBox1');
Если ваш селектор сработает, вы получите массив с 1 элементом в нем. Если он ничего не находит, он просто вернет пустой массив.
Ответ №2:
Вам нужно обернуть в ready (чтобы ваш js выполнялся, когда DOM будет готов):
$(function(){
$('#TextBox1').keyup(function(){
$('#TextBox2').val(this.value);
});
});
Комментарии:
1. 1 Вот в чем проблема (вместе с исправленным идентификатором). Я даже не заметил этого.
2. @patrick dw пока элементы находятся в DOM при запуске скрипта, он должен работать нормально.
3. В опубликованном коде они есть, @Neal — конечно, если опубликованный код не является реальным кодом, тогда мы действительно понятия не имеем, что происходит 🙂
4. @Pointy: Ты прав. Я сегодня очень смущен. Элементы, безусловно, находятся в DOM перед скриптом. Вчера я возился с Erlang. Я думаю, что это поджарило мой мозг!
5. @pointy, верно, верно, но у меня всегда вошло в привычку оборачивать свой код просто так
Ответ №3:
Я думаю, это должно сработать. Вам нужна $(document).ready(function(){});
оболочка, чтобы обработчик был прикреплен после того, как dom будет готов. Я редактировал с помощью скрипта включения из CDN
<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js”></script>
<script>
$(document).ready(function(){
$('#TextBox1').keyup(function(){
$('#TextBox2').val($(this).val());
});
};
</script>
Ответ №4:
Я много пробовал, но, похоже, jquery
это не сработало, поэтому я получил требуемое следующим образом
<script type="text/javascript">
function sync()
{
var n1 = document.getElementById('TextBox1');
var n2 = document.getElementById('TextBox2');
n2.value = n1.value;
}
</script>
Ответ №5:
Поскольку текстовые поля размещают свое содержимое между <textarea>
тегами, а не в value
атрибуте, вам, вероятно, повезет больше при использовании $(this).text()
, а не this.value
:
$('#TextBox1').keyup(function() {
$('#TextBox2').text($(this).text());
});
Кроме того, #TextBox12
!= #TextBox2
.
Комментарии:
1. Нет, для
<textarea>
вы должны использоватьvalue
свойство, потому что оно обновляется при вводе пользователем.2. Я никогда не слышал о том, чтобы входные данные вели себя как текстовые области. Никогда.
3. @Cobra_Fast: То есть вы хотите сказать, что
.value
свойство неверно?4. @patrick dw Нет, я говорил, что «Я никогда не слышал о том, чтобы входные данные вели себя как текстовые области». …
5. @Cobra_Fast: Да, я прочитал ваш комментарий. Поскольку вы были так настойчивы, казалось, что вы высказываете какую-то точку зрения. Я просто не уверен, что это такое.