Как сделать таймер
привет. Есть код
var nameVal = $( "#nameInput" ).val();
var msg = $( "#messageInput" ).val();
var canalVal = $( "#canalInput" ).val();
if((nameVal) && (msg)){
socket.emit( 'message', { name: nameVal, message: msg, canal: canalVal } )
};
Мне надо, чтобы эта строчка
socket.emit( 'message', { name: nameVal, message: msg, canal: canalVal } )
выполнялась не чаще 3000мс. Как сделать? Спасибо |
setInterval(function(){message();} , 3000);
var message = function(){
var nameVal = $( "#nameInput" ).val();
var msg = $( "#messageInput" ).val();
var canalVal = $( "#canalInput" ).val();
if((nameVal) && (msg)){
socket.emit( 'message', { name: nameVal, message: msg, canal: canalVal } )
};
};
setInterval - repeated eatch 3000ms)) можно так попробовать. |
ruslite,
var nameVal = $("#nameInput").val();
var msg = $("#messageInput").val();
var canalVal = $("#canalInput").val();
flag = true;
if (nameVal && msg && flag) {
flag = false;
window.setTimeout(function () {
flag = true
}, 3000)
socket.emit('message', {
name: nameVal,
message: msg,
canal: canalVal
})
};
|
Цитата:
|
Цитата:
var socket = io.connect( 'http://localhost:8080' );
$( "#messageForm" ).submit( function() {
var nameVal = $( "#nameInput" ).val();
var msg = $( "#messageInput" ).val();
var canalVal = $( "#canalInput" ).val();
if(nameVal && msg){
socket.emit( 'message', { name: nameVal, message: msg, canal: canalVal } )
};
// Ajax call for saving datas
$.ajax({
url: "./ajax/insertNewMessage.php",
type: "POST",
data: { name: nameVal, message: msg, canal: canalVal },
success: function(data) {
}
});
return false;
});
socket.on( 'message', function( data ) {
var actualContent = $( "#messages" ).html();
var newMsgContent = '<li> <strong>' + data.name + '</strong> : ' + data.message
.replace(new RegExp("&#D83DDE04",'gi'),"<img src='../packs/basic/D83DDE04.png' height='21' width='21'>")
.replace(new RegExp("&#D83DDC8A",'gi'),"<img src='../packs/basic/D83DDC8A.png' height='21' width='21'>") + '</li>';
var content = newMsgContent + actualContent;
$( "#messages" ).html( content );
});
|
ruslite,
и где в вашем коде то что я добавил? |
Цитата:
var socket = io.connect( 'http://localhost:8080' );
$( "#messageForm" ).submit( function() {
var nameVal = $("#nameInput").val();
msg = $("#messageInput").val();
var canalVal = $("#canalInput").val();
flag = true;
if (nameVal && msg && flag) {
flag = false;
window.setTimeout(function () {
flag = true
}, 3000)
socket.emit('message', {
name: nameVal,
message: msg,
canal: canalVal
})
};
// Ajax call for saving datas
$.ajax({
url: "./ajax/insertNewMessage.php",
type: "POST",
data: { name: nameVal, message: msg, canal: canalVal },
success: function(data) {
}
});
return false;
});
socket.on( 'message', function( data ) {
var actualContent = $( "#messages" ).html();
var newMsgContent = '<li> <strong>' + data.name + '</strong> : ' + data.message
.replace(new RegExp("&#D83DDE04",'gi'),"<img src='../packs/basic/D83DDE04.png' height='21' width='21'>")
.replace(new RegExp("&#D83DDC8A",'gi'),"<img src='../packs/basic/D83DDC8A.png' height='21' width='21'>") + '</li>';
var content = newMsgContent + actualContent;
$( "#messages" ).html( content );
});
|
может реализовать на странице где форма сама. функцию, которая будет запрещать отправлять форму не чаще 3 сек?
вот сама форма
<div class="example">
<form class="form-inline" id="messageForm">
<input id="nameInput" type="hidden" class="input-medium" value="<?php echo $log_username;?>" />
<input id="canalInput" type="hidden" class="input-medium" value="<?php echo $name;?>" />
<div id="messageInput" name="messageInput1" placeHolder="Ваше сообщение"></div>
<input type="submit" value="Отправить" onclick="$('.emoji-wysiwyg-editor').html('')"/>
</form>
</div>
|
ruslite,
могу только гадать может 17 строка должна стоять в 29 |
Цитата:
|
ruslite,
пока советую помедитировать над строкой msg = $("#messageInput").val(); |
Цитата:
|
ruslite,
flag = true; надо вынести за submit
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div class="example">
<form class="form-inline" id="messageForm">
<input id="nameInput" type="hidden" class="input-medium" value="<?php echo $log_username;?>" />
<input id="canalInput" type="hidden" class="input-medium" value="<?php echo $name;?>" />
<div id="messageInput" name="messageInput1" placeHolder="Ваше сообщение">12345</div>
<input type="submit" value="Отправить" onclick="$('.emoji-wysiwyg-editor').html('')"/>
</form>
</div>
<script>
flag = true;
$( "#messageForm" ).submit( function() {
var nameVal = $("#nameInput").val();
msg = $("#messageInput").html();
var canalVal = $("#canalInput").val();
if (nameVal && msg && flag) {
flag = false;
window.setTimeout(function () {
flag = true
}, 3000) ;
alert("форма отправлена");
}
else {alert("ждите отстоя пены")};
return false;
});
</script>
</body>
</html>
|
Цитата:
|
Цитата:
|
ruslite,
строка 23 |
Цитата:
<script>flag =true; </script> <input type="submit" value="Отправить" onclick="$('.emoji-wysiwyg-editor').html('')"/> |
посоветовали вот так
if(Date.now() - lastCallTime >= 3 * 1000) {
socket.emit(...);
lastCallTime = Date.now(); // или new Date().getTime();
}
Как правильно объявить lastCallTime выше кода? |
ruslite,
ну чем вас решение то из 13 поста неустроило ??? понажимайте там отправить -- форма отправится нечаще 1 раза в три секунды замените алерт в 33 строке на то что вам нужно |
Цитата:
|
$( "#messageForm" ).submit( function() {
25
var nameVal = $("#nameInput").val();
26
msg = $("#messageInput").html();
27
var canalVal = $("#canalInput").val();
28
if (nameVal && msg && flag) {
это в другом скрипте |
ruslite,
:blink: может так вам проще будет понять алгоритм
flag = true;
$( "#messageForm" ).submit( function() {
if(!flag) return false;
flag = false;
window.setTimeout(function () {
flag = true
}, 3000) ;
//тут ваш код
})
|
Цитата:
<script src="js/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script> <script src="js/nodeClient.js"></script>и все |
ruslite,
посмотрите снова сообщение 13 там разве когда-то данные формы отправляются самой формой ? строка 38 запрещает отправлять форму. сообщение 22 добавьте return false в 10 строку и форма снова никогда неотправится |
Цитата:
<script>
flag = true;
$( "#messageForm" ).submit( function() {
if(!flag) return false;
flag = false;
window.setTimeout(function () {
flag = true
}, 3000) ;
//тут ваш код
return false;
});
</script>
все как было раньше так и осталось. Что не так? |
<script>
flag = true; $( "#messageForm" ).submit( function() { if(!flag) return false; flag = false; window.setTimeout(function () { flag = true }, 3000) ; alert(rewrew); false; }); </script> даже алерт не появляется |
Цитата:
:write:
DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div class="example">
<form class="form-inline" id="messageForm">
<input id="nameInput" type="hidden" class="input-medium" value="<?php echo $log_username;?>" />
<input id="canalInput" type="hidden" class="input-medium" value="<?php echo $name;?>" />
<div id="messageInput" name="messageInput1" placeHolder="Ваше сообщение">12345</div>
<input type="submit" value="Отправить" onclick="$('.emoji-wysiwyg-editor').html('')"/>
</form>
</div>
<script>
flag = true;
$( "#messageForm" ).submit( function() { var rewrew = $('#messageInput').html()
if(!flag) return false;
flag = false;
window.setTimeout(function () {
flag = true
}, 3000) ;
alert(rewrew);
return false;
});
</script>
</body>
</html>
|
Цитата:
готовность страницы проверяйте
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>$(function ()
{
flag = true;
$( "#messageForm" ).submit( function() { var rewrew = $('#messageInput').html()
if(!flag) return false;
flag = false;
window.setTimeout(function () {
flag = true
}, 3000) ;
alert(rewrew);
return false;
});
})
</script>
</head>
<body>
<div class="example">
<form class="form-inline" id="messageForm">
<input id="nameInput" type="hidden" class="input-medium" value="<?php echo $log_username;?>" />
<input id="canalInput" type="hidden" class="input-medium" value="<?php echo $name;?>" />
<div id="messageInput" name="messageInput1" placeHolder="Ваше сообщение">12345</div>
<input type="submit" value="Отправить" onclick="$('.emoji-wysiwyg-editor').html('')"/>
</form>
</div>
</body>
</html>
|
Цитата:
|
ruslite,
и кто-же отправил данные))) |
Цитата:
|
спасибо за скрипт, ошибка в моих скриптах, сокет отправляет дважды.
|
| Часовой пояс GMT +3, время: 23:08. |