jQuery не работает с runat= " сервер"
мой код ниже работает нормально при использовании в HTML. Тот же код, который я попытался поместить в форму, и он перестал работать. Как исправить эту проблему?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="jquery-1.7.1.min.js" ></script>
<title>Chat scroll test</title>
<style type="text/css">
#chat
{
width: 200px;
height: 200px;
border: 1px solid black;
overflow-y: auto;
}
</style>
<script>
jQuery(document).ready(function ($) {
monitor = function () {
var $this = $(this),
wrap = $this.find('.wrapper'),
height = $this.height(),
maxScroll = wrap.height() - height,
top = $this.scrollTop();
if (maxScroll === top) {
$this.addClass('atBottom');
} else {
$this.removeClass('atBottom');
}
}
window.setInterval(function () {
monitor.call($('#chat').get(0));
}, 350);
$('#chat').bind('addMessage', function (e, message) {
var $this = $(this),
top = $this.scrollTop(),
scroll = $this.hasClass('atBottom');
$this.find('.wrapper').append(message);
if (scroll) {
var wrap = $this.find('.wrapper'),
height = $this.height(),
maxScroll = wrap.height() - height
$this.scrollTop(maxScroll);
}
})
$('button').click(function () {
$('#chat').trigger('addMessage', 'asdgagasdg<br/>');
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="chat">
<div class="wrapper">
adsgasgda<br/>
adsgasg<br/>
asd<br/>
adsgasgda<br/>
adsgasg<br/>
adsgasgda<br/>
adsgasg<br/>
adsgasgda<br/>
adsgasg<br/>
adsgasgda<br/>
adsgasg<br/>
adsgasgda<br/>
adsgasg<br/>
adsgasgda<br/>
adsgasg<br/>
</div>
</div>
<button>Add a line</button>
</form>
</body>
</html>
когда тег формы удаляется, он снова начинает работать.
3 ответов
когда у вас есть внутри a автоматически отправляет форму. Заменить
<button>Add a line</button>
С
<input type="button" value="Add a line" />
и таким образом браузер не публикует форму, когда она нажата.
не забудьте также изменить селектор jQuery с
$('button').click(function () {
что-то вроде
$(':button').click(function () {
для .NET 4.0 добавить Статический ClientIDMode для тегов, чтобы появиться на стороне клиента, они появляются на стороне сервера.
что-то вроде
<form id="form1" runat="server" ClientIDMode="Static">
для старого .net используйте ' ' в коде jQuery / Javascript, когда вы ссылаетесь на элемент управления
что-то вроде
'<%= form1.ClientID %>'
подсказка: посмотрите на идентификаторы кода в окончательном HTML.
Это должно дать вам представление о том, что происходит. Существует несколько решений для этого, но это зависит от того, какую версию .net вы используете.