Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как сделать таймер (https://javascript.ru/forum/events/45614-kak-sdelat-tajjmer.html)

ruslite 08.03.2014 09:13

Как сделать таймер
 
привет. Есть код
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мс. Как сделать? Спасибо

kotamirov 08.03.2014 10:15

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))
можно так попробовать.

рони 08.03.2014 10:36

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
      })
  };

ruslite 08.03.2014 10:38

Цитата:

Сообщение от kotamirov (Сообщение 301686)
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 08.03.2014 10:42

Цитата:

Сообщение от рони (Сообщение 301687)
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 );
	
});

рони 08.03.2014 10:49

ruslite,
и где в вашем коде то что я добавил?

ruslite 08.03.2014 10:52

Цитата:

Сообщение от рони (Сообщение 301691)
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 );
	
});

ruslite 08.03.2014 10:53

может реализовать на странице где форма сама. функцию, которая будет запрещать отправлять форму не чаще 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>

рони 08.03.2014 10:58

ruslite,
могу только гадать может 17 строка должна стоять в 29

ruslite 08.03.2014 11:08

Цитата:

Сообщение от рони (Сообщение 301694)
ruslite,
могу только гадать может 17 строка должна стоять в 29

нет, не хочет к сожалению. А может реализовать, чтобы форму нельзя было отправлять чаше 3 сек? Как это можно сделать?


Часовой пояс GMT +3, время: 06:46.