Отправка формы по ENTER (ajax) и перенос строки
<form id="myForm" action="site/action"> <table border="0"> <tr> <td width="160" valign="top"> Сообщение: </td> <td> <textarea id="msg" id="message" name="msg" style="width: 300px;"></textarea> </td> </tr> <tr> <td width="160"> </td> <td> <input type="submit" value="Отправить сообщение"> </td> </tr> </table> </form> <div id="messages"> </div>
function splash()
{
if (document.myForm.msg.value =='')
{
alert ("Заполните текст сообщения!");
return false;
}
return true;
}
// загрузка сообщений из БД в контейнер messages
function show_messages()
{
$.ajax({
url: "show.php",
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);
});
Форма нормально работает но только при клике на кнопку "Отправить сообщение" Как сделать так чтобы сообщение отправлялось и по кнопке и по ENTER'у , а shift + enter и ctrl + enter перенос строки ? Заранее большое спасибо. |
Цитата:
|
Цитата:
но вот опыта и знаний пока маловато |
Цитата:
|
Цитата:
я не могу вснуть функцию так чтобы она работала у меня .. можете пожалуйста помочь ? |
Цитата:
var flagGoIn = true;
$('#MessChat') // область для textarea и кнопки отправить
.html(result.html) //вставляет в область textarea и кнопку отправить
.off('click', '#MessChatOk')
.on('click', '#MessChatOk', function(){
$.goMessIn(); //отправляет по клику на ОК
})
.off('keydown')
.on('keydown', function(event){
if (event.keyCode == 17) {
$(document).on('keydown', function(event){
if (event.keyCode == 13 && flagGoIn) {
$.goMessIn(); // отправляет по ctrl + enter
$(document).off('keydown');
flagGoIn = false;
}
})
.keyup(function(event){
flagGoIn = true;
});
}
});
Посмотреть можно тут http://37a.su/ (необходимо зарегистрироваться) |
Цитата:
как мне этот код всунуть сюда ? в этом коде у меня все отлично отправляется.. но не знаю как в эту функцию всунуть отправку сообщения по Enterу и перенос строки по shift+Enter и ctrl+Enter
$(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);
});
|
|
Цитата:
|
еще вопрос..
мне нужно очистить textarea после отправки формы .. При нажатии на кнопку все ок.. textarea очищается после отправления формы.. но при отправке формы через Ctrl+Enter этого не происходит.. Где ошибка ? <form id="myForm" action="site/action" onsubmit="clearForm(this); return true;"> Сообщение: <textarea id="msg" name="msg" cols="36" rows="4" style="width:90%;" ></textarea> </br></br> <input type="submit" value="Отправить сообщение"> </form>
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;
}
$.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.elements.msg.value='';
}, 100);
}
|
Цитата:
<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, вопрос не читай @ сразу отвечай!
|
VEGA,
не надо таскать код по разным местам - сделай функцию отправки сообщения и ссылайся на нее при нажатии на кнопку и на комбинацию клавиш. Цитата:
Если так не делать, то при переходе юзера по комнате события на элементе будут накапливаться и сначала у тебя отправиться один раз, потом два, три и т.д. Скрипт отдал "как есть" - пусть он сам разбирается, если хочет научиться. |
Цитата:
а как вызвать функцию 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;
});
}
});
|
Цитата:
{
<свойство>: myFnc()
}
|
Так ведь надо агрументом ссылку передать на форму. Посмотри на определение функции. Ну да, и затолкал вызов хрен пойми куда.
|
$('#твоя-тексареа').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;
});
}
});
Вы опять мне очень помогли :) Благодарю вас .. Все работает:thanks: |
| Часовой пояс GMT +3, время: 09:16. |