/* Handle keyboard input in the text input area
 */
function OnTypeInput ( HTMLElement )
{
external.globals( 'autoawaytime' ) = 0;
if ( event.keyCode == 13 && !window.event.shiftKey )
{
if ( ! document.getElementById( 'btn-send' ).disabled )
SendMessage();
return false;
}
}
上面的代码作用是按回车发送信息,如果按下回车的同时按下shift那么就直接直接在文本框中输入回车。
但是我将shiftKey改成ctrlKey为什么就无效呢?根本就没有输入个回车。我是想实现跟qq一样的,输入ctrl+回车后直接换行。ps:上面的代码是一个聊天工具中的叫padion。

解决方案 »

  1.   


    function document.onkeydown()

    status=event.keyCode; 
    if(event.keyCode==17)
    {
    alert("sadf");
    }
    }
      

  2.   

    楼上 那个不行的
    那个是个事件其实,你细细看我代码和说明就知道了我就是要将原来的shift+enter输入一个回车,改成ctrl+enter,因为qq中一直用的这一对,习惯了
      

  3.   

    function OnTypeInput ( HTMLElement )
    {
        external.globals( 'autoawaytime' ) = 0;
        if ( event.keyCode == 13 && !window.event.ctrlKey )//为什么这里改成ctrl不行?
        {
            if ( ! document.getElementById( 'btn-send' ).disabled )
                SendMessage();
            return false;
        }
    }
      

  4.   


      function keypress(event) {
                event = event || window.event;
                var code = event.keyCode || event.which;
                alert(code);
                //是ctrKey
                if (code == 13 && !event.ctrKey) {
                    alert(123);
                }
            }
      

  5.   

    貌似错了,下面这个FF和IE8都可以的。。
     function keypress(event) {
                event = event || window.event;
                var code = event.keyCode || event.which;
                alert(code);
                if (code == 13 && !event.ctrlKey) {
                    alert(123);
                }
            }
      

  6.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
      <SCRIPT LANGUAGE="JavaScript">
      <!--
    function document.onkeydown()
        { 
            var ev = null; 
    if (window.event){ 
    ev = window.event; 
    }else{ 
    ev = moz_ev; 

    if (ev != null && ev.ctrlKey && ev.keyCode == 13) 

    alert("ctrl+enter");
    }     }  //-->
      </SCRIPT>
     </BODY>
    </HTML>
      

  7.   

    .........各位老大,测试的我知道,我的目的是将原来的shift+enter输入一个回车,改成ctrl+enter,我将下面的shiftKey改成了ctrltKey可是并没有输入回车。请各位在以下的基础上修改,谢谢各位帮忙!function OnTypeInput ( HTMLElement )
    {
        external.globals( 'autoawaytime' ) = 0;
        if ( event.keyCode == 13 && !window.event.shiftKey )
        {
            if ( ! document.getElementById( 'btn-send' ).disabled )
                SendMessage();
            return false;
        }
    }
      

  8.   


    <input type="text" onkeydown="run(event)"></input>
    <script>
    function run(event){
    var e=event||window.event;
    if(e.keyCode==13&&e.ctrlKey==1){
    alert('ctrl+enter  down!!')
    }
    }
      

  9.   

    你们给例子我都明白,里面的东西我在发帖前就测试过了,我早就将event.shiftKey改成event.ctrlKey测试了,根本没用,我也插入代码测试了,event.ctrlKey是可以触发的。你如果详细看了我上面的就明白了,可是好多人都没看完就写个回复。再强调下问题的关键“实际程序程序是按shift+enter在文本框中回车,我要ctrl+enter”,我在发帖前已经将“event.shiftKey改成event.ctrlKey,可是结果无效。”我给个完整点的代码吧:
    <TR valign=top height=60>
    <TD colspan=2>
    <TEXTAREA
    id=send-text
    onkeydown="return OnTypeInput( this )"
    onpropertychange="document.getElementById( 'btn-send' ).disabled = ( /^\s*$/ ).test( this.value )"
    ></TEXTAREA>
    </TD>
    <TD align=right valign=middle>
    <INPUT
    id=btn-send
    type=submit
    oncontextmenu="return false"
    onclick="SendMessage()"
    accesskey="s"
    disabled
    >
    </TD>
    </TR>function OnTypeInput ( HTMLElement )
    {
    external.globals( 'autoawaytime' ) = 0; /*if ( event.keyCode == 13 && window.event.ctrlKey )//我测试的
    {
    document.getElementById("send-text").value=document.getElementById("send-text").value + '\r\n';
    document.getElementById("send-text").refresh;
    }*/ if ( event.keyCode == 13 && !window.event.shiftKey )
    {
    if ( ! document.getElementById( 'btn-send' ).disabled )
    SendMessage();
    return false;
    }
    }
      

  10.   

    ctrl+enter,可以弹出消息。为了避免按钮获得焦点,触发事件,我把按钮删除了<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
      <TABLE>
      <TR valign=top height=60>
        <TD colspan=2>
            <TEXTAREA id="send-text" onkeydown="return OnTypeInput(this)"></TEXTAREA>
        </TD>
    </TR>  </TABLE>
      <SCRIPT LANGUAGE="JavaScript">
      <!--
    function OnTypeInput ( HTMLElement )
    {
       // external.globals( 'autoawaytime' ) = 0; /*if ( event.keyCode == 13 && window.event.ctrlKey )//我测试的
    {
    document.getElementById("send-text").value=document.getElementById("send-text").value + '\r\n';
    document.getElementById("send-text").refresh;
    }*/ if ( event.keyCode == 13 && window.event.ctrlKey )
    {
    //if ( ! document.getElementById( 'btn-send' ).disabled )
    SendMessage();
    return false;
    } }
       function SendMessage()
       {
    alert(document.getElementById('send-text').value);
       }
      //-->
      </SCRIPT>
     </BODY>
    </HTML>
      

  11.   

    我真是欲哭无泪,哥们,用过qq吧?qq中默认的是回车发送消息,想要在消息中换行就在键盘上按ctrl+enter,我就是想达到这个效果。你上面的代码目前是这样的:
    1.按下回车键,文本框中换行
    2.按下ctrl+回车键,alert xxx预期是这样的:
    1.按下回车键,那么就提交内容(这个可以无视,在函数中return False就可以忽略这个回车了)
    2.按下ctrl+回车键,文本框中换行,也就是另起一行NG)帮忙上面第二条(也就是红色标记的)解决下吧,除了x=x + '\r\n'有没有其他的方法了?因为我发现用x=x + '\r\n'后光标还在当前行。我觉得只要不return false,最终文本框还是会接收这个换行的,可事实不是。觉得各位好像误认为我对按下ctrl后的操作动作是什么不了解,所以写了一堆event.ctrlKey的代码,郁闷。
      

  12.   

    刚刚在CSDN的这个输入框出试了下发现:
    enter 可以回车
    shift + enter 可以回车
    ctrl  + enter 不可以回车
    alt   + enter 不可以回车好像是ie本来就这德性,看样子只有自己捕获“ctrl+enter”然后处理了,我原始的方法:
    x.value = x.value + '\r\n'
    应该是上面这样的代码吧,可是为什么文本框中的光标不自动跑到下面一行去啊?
      

  13.   

    QQ上也是这毛病,ctrl+enter后,要两次才会换行~~
    你x.value = x.value + '\r\n' 这样子是对的~