01.03.2013, 06:45
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от VEGA
|
но при отправке формы через Ctrl+Enter этого не происходит..
|
<form id="myForm" target="frame1" onkeyup="" action="site/action" onsubmit="clearForm(this);return true;">
Сообщение:</br>
<textarea id="msg" name="msg" cols="36" rows="4" style="width:90%;" ></textarea>
</br></br>
<input type="submit" value="Отправить сообщение" onclick="">
</form>
<script type="text/javascript">
function splash()
{
if (document.myForm.msg.value =='')
{
alert ("Заполните текст сообщения!");
return false;
}
return true;
}
// загрузка сообщений из БД в контейнер messages
function show_messages()
{
$.ajax({
url: "show.php",
data: "&page=<?=intval($_GET['page'])?>",
cache: false,
success: function(html){
$("#messages").html(html);
}
});
}
$(document).ready(function(){
show_messages();
// контроль и отправка данных на сервер в фоновом режиме при нажатии на кнопку "отправить сообщение"
$("#myForm").submit(function(){
var msg = $("#msg").val();
if (msg =='')
{
alert ("Заполните текст сообщения!");
return false;
}
$.ajax({
type: "POST",
url: "action.php",
data: "msg="+msg+"&action=add",
success: function(msg){
show_messages();
}
});
return false;
});
show_messages();
setInterval("show_messages()", 10000);
var flagGoIn = true;
$('#myForm')
.off('keydown')
.on('keydown', function(event){
if (event.keyCode == 17) {
$('#myForm').on('keydown', function(event){
var msg = $("#msg").val();
if (event.keyCode == 13 && flagGoIn) {
if (msg =='')
{
alert ("Заполните текст сообщения!");
return false;
}setTimeout(function() {$('#myForm').reset()}, 100)
$.ajax({
type: "POST",
url: "action.php",
data: "msg="+msg+"&action=add",
success: function(msg){
show_messages();
}
});
//$('#myForm').off('keydown');
flagGoIn = false;
}
})
.keyup(function(event){
flagGoIn = true;
});
}
});
});
function clearForm(f) {
window.setTimeout(function() {
f.reset();
}, 100);
}
</script>
Последний раз редактировалось Deff, 01.03.2013 в 06:52.
|
|
01.03.2013, 06:50
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от VEGA
|
053
$('#myForm')
054
.off('keydown')
055
.on('keydown', function(event){
056
if (event.keyCode == 17) {
057
$('#myForm').on('keydown', function(event){
|
А че тут творится?
Сообщение от VEGA
|
Где ошибка ?
|
Так ведь clearForm сам не вызовется, нужно вызывать по нажатию Ctrl+Enter.
|
|
01.03.2013, 06:52
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Deff, вопрос не читай @ сразу отвечай!
|
|
01.03.2013, 08:32
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
VEGA,
не надо таскать код по разным местам - сделай функцию отправки сообщения и ссылайся на нее при нажатии на кнопку и на комбинацию клавиш.
Сообщение от danik.js
|
А че тут творится?
|
off-on вызывается из-за того, что у меня одна страница и всё остальное - динамическая подгрузка. Поэтому я сначала сбрасываю событие, а потом назначаю.
Если так не делать, то при переходе юзера по комнате события на элементе будут накапливаться и сначала у тебя отправиться один раз, потом два, три и т.д.
Скрипт отдал "как есть" - пусть он сам разбирается, если хочет научиться.
|
|
01.03.2013, 13:11
|
Интересующийся
|
|
Регистрация: 28.02.2013
Сообщений: 14
|
|
Сообщение от Serg_pnz
|
VEGA,
не надо таскать код по разным местам - сделай функцию отправки сообщения и ссылайся на нее при нажатии на кнопку и на комбинацию клавиш.
off-on вызывается из-за того, что у меня одна страница и всё остальное - динамическая подгрузка. Поэтому я сначала сбрасываю событие, а потом назначаю.
Если так не делать, то при переходе юзера по комнате события на элементе будут накапливаться и сначала у тебя отправиться один раз, потом два, три и т.д.
Скрипт отдал "как есть" - пусть он сам разбирается, если хочет научиться.
|
а как вызвать функцию clearForm ?
function clearForm(f) {
window.setTimeout(function() {
f.elements.msg.value='';
}, 100);
}
пробую вот так .. не работает
var flagGoIn = true;
$('#myForm')
.off('keydown')
.on('keydown', function(event){
if (event.keyCode == 17) {
$('#myForm').on('keydown', function(event){
var msg = $("#msg").val();
if (event.keyCode == 13 && flagGoIn) {
if (msg =='')
{
alert ("Заполните текст сообщения!");
return false;
}
$.ajax({
type: "POST",
url: "action.php",
data: "msg="+msg+"&action=add",
clearForm();
success: function(msg){
show_messages();
}
});
//$('#myForm').off('keydown');
flagGoIn = false;
}
})
.keyup(function(event){
flagGoIn = true;
});
}
});
|
|
01.03.2013, 13:15
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от VEGA
|
пробую вот так .. не работает
|
Функция внутри объекта может быть вызвана только в таком контексте
{
<свойство>: myFnc()
}
|
|
01.03.2013, 13:16
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Так ведь надо агрументом ссылку передать на форму. Посмотри на определение функции. Ну да, и затолкал вызов хрен пойми куда.
Последний раз редактировалось danik.js, 01.03.2013 в 13:22.
|
|
01.03.2013, 13:52
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
$('#твоя-тексареа').val('');
вставить сразу по отправке сообщения
VEGA,
попробуй проанализировать http://37a.su/js/chatIn.js
|
|
01.03.2013, 14:09
|
Интересующийся
|
|
Регистрация: 28.02.2013
Сообщений: 14
|
|
Сообщение от Serg_pnz
|
$('#твоя-тексареа').val('');
вставить сразу по отправке сообщения
VEGA,
попробуй проанализировать http://37a.su/js/chatIn.js
|
var flagGoIn = true;
$('#myForm')
.off('keydown')
.on('keydown', function(event){
if (event.keyCode == 17) {
$('#myForm').on('keydown', function(event){
var msg = $("#msg").val();
if (event.keyCode == 13 && flagGoIn) {
if (msg =='')
{
alert ("Заполните текст сообщения!");
return false;
}
$.ajax({
type: "POST",
url: "action.php",
data: "msg="+msg+"&action=add",
success: function(msg){
show_messages();
clearForm();
}
});
$('#msg').val('');
//$('#myForm').off('keydown');
flagGoIn = false;
}
})
.keyup(function(event){
flagGoIn = true;
});
}
});
Вы опять мне очень помогли
Благодарю вас .. Все работает
|
|
|
|