2011-04-10 38 views
0

我有一個劇本發送的點擊數據 - jQuery的AJAX聊天

var name = "Guest"; 
    name = name.replace(/(<([^>]+)>)/ig,""); 
    var chat = new Chat(); 
    $(function() { 
     chat.getState(); 
     $("#sendie").keydown(function(event) { 
      var key = event.which; 
      if (key >= 33) { 
       var maxLength = $(this).attr("maxlength"); 
       var length = this.value.length; 
       if (length >= maxLength) { 
        event.preventDefault(); 
       } 
       } 
       }); 
     $('#sendie').keyup(function(e) { 
       if (e.keyCode == 13) { 
       var text = $(this).val(); 
       var maxLength = $(this).attr("maxlength"); 
       var length = text.length; 
       if (length <= maxLength + 1) { 
        chat.send("testtext", name); 
        $(this).val(""); 
       } else { 
        $(this).val(text.substring(0, maxLength)); 
       } 
       } 
     }); 
    }); 

HTML結構是一個jQuery聊天;

<body onload="setInterval('chat.update()', 1000)"> 

    <div id="page-wrap"> 

     <h2>jQuery/PHP Chat</h2> 

     <p id="name-area"></p> 

     <div id="chat-wrap"><div id="chat-area"></div></div> 

     <form id="send-message-area"> 
      <p>Your message: </p> 
      <textarea id="sendie" maxlength = '100' ></textarea> 
      <button id="submit">submit</button> 
     </form> 

    </div> 

</body> 

此發送(或保存到文件)消息時,我打我的消息後ENTER關鍵。我用testtext替換了文本區域數據。我想在點擊submit按鈕時發送數據。

我該怎麼做?

我想修改this例子。如果有人得到了一個解決方案,請讓我知道..我想添加一個按鈕,而不是默認enter鍵擊。

在此先感謝... :)

blasteralfred

+0

有沒有什麼辦法,如果我走'<按鈕ID = 「提交」>提交 '外形成?? – 2011-04-10 12:38:33

回答

0

我解決它通過從主組刪除chat sendtrigger click function如下它包括;

$('#trigger').click(function() { 
    chat.send("testtext", name); 
    $(this).val(""); 
    }); 

感謝@Kon,@Piotr Salaciak和@ Dutchie432的支持... :)

0

你可以嘗試火submiting表單時事件:

$('#sendie').keyup(function(e, extra) { 
    if (e.keyCode == 13 || extra.keyCode == 13) { 
     var text = $(this).val(); 
     var maxLength = $(this).attr("maxlength"); 
     var length = text.length; 
     if (length <= maxLength + 1) { 
      chat.send("testtext", name); 
      $(this).val(""); 
     } else { 
      $(this).val(text.substring(0, maxLength)); 
     } 
    } 
}); 

...

$("#send-message-area").submit(){ 
    $('#sendie').trigger('keyup', [{keyCode: 13}]); 
    return false; 
} 

行需要return false以防止重新加載您的頁面即

更新後添加一個新的參數名爲extrakeyup功能,觸發的事件「手動」,將持有的密鑰號碼。

+0

這隻有在你也可以傳遞鍵碼13(也許你可以?)的情況下才能工作,以確保所需的代碼被觸發。 – Dutchie432 2011-04-10 12:17:32

+0

@ Dutchie432,對,謝謝你,它已更新 – 2011-04-10 12:19:05

+0

再次..不知道這是否會工作,因爲函數期望一個事件,而不是一個名爲'keyCode'的變量。你能做這個工作嗎? http://jsfiddle.net/kV7qL/1/ – Dutchie432 2011-04-10 12:23:46

0

只取代碼$('#sendie').keyup(),創建一個函數,並從$('#sendie').keyup()$('#send-message-area').submit()

東西稱呼它

var name = "Guest"; 
name = name.replace(/(<([^>]+)>)/ig,""); 
var chat = new Chat(); 
$(function() { 
    chat.getState(); 
    $("#sendie").keydown(function(event) { 
     var key = event.which; 
     if (key >= 33) { 
      var maxLength = $(this).attr("maxlength"); 
      var length = this.value.length; 
      if (length >= maxLength) { 
       event.preventDefault(); 
      } 
      } 
      }); 
    $('#sendie').keyup(function(e) { 
      if (e.keyCode == 13) { 
      doSend(); 
      return (false); 
      } 
    }); 
    $('#send-message-area').submit(function(e) { 
     doSend(); 
     return (false); 
    }); 
}); 

function doSend(){ 
    var text = $('#sendie').val(); 
    var maxLength = $('#sendie').attr("maxlength"); 
    var length = text.length; 
    if (length <= maxLength + 1) { 
     chat.send("testtext", name); 
     $('#sendie').val(""); 
    } else { 
     $('#sendie').val(text.substring(0, maxLength)); 
    } 
} 
+0

可以修改代碼嗎? :) – 2011-04-10 12:26:59

+0

我不是已經這樣做了嗎? – Dutchie432 2011-04-10 12:30:10

1

使用jQuery的ajax()post()。例如:

$('#submit').click(function() { 
    $.ajax({ 
     url: myUrl, 
     cache: false, 
     dataType: "json", 
     data: { 'message' : $('#sendie').val() }, 
     success: function(data){ 
     //... 
     }, 
     error: function(e, xhr){ 
     //... 
     } 
    }); 
}); 
+0

你可以做我的腳本? – 2011-04-10 13:27:07

+0

是的,有可能嗎?是。我會爲你做嗎?如果你付我錢......把它弄明白。 – Kon 2011-04-10 14:04:13