2011-11-30 39 views
0

當我在某些文本字段中時,我希望能夠停止「enter」按鍵的傳播。jQuery在某些文本元素中選擇「輸入」並攔截父表單的提交事件

基本上只要我確定輸入,我不想要他們提交的表單,我需要攔截它。 (表單被分成「窗口」,如果他們不在最後一個窗口(.win2),我不希望他們能夠在沒有意識到他們只在第一個窗口中時進入並提交表單。

我希望是有道理的

這裏就是我有:

$(".win1 :input").keyup(function(e){ 
    if(e.which === 13){ 
     return false; 
    } 
}); 

不幸的是,這並不工作KeyUp事件被解僱,但我不認爲return false作品恰如其分。 。使用e.preventDefault(); e.stopPropagation();也不起作用。是否有一種簡單的方法可以阻止submit事件fr通過聽「進入」按鍵來觸發表單?

感謝

回答

5

您可以取代你的輸入型=由一個普通按鈕,如果數據是合法的,這將這樣做$("form").submit();「提交」,否則提交永遠不會觸發。

通常這應該工作:

$(".win1 :input").keypress(function(e){ 
    if(e.which === 13){ 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
}); 
+0

嗨尼爾斯,這是一個好主意,是如果有,你可以攔截的方式只是感興趣。顯然不是,那麼它必須是更有意思的事情。 :)是的,我認爲情況也是如此,但不幸的是它似乎無法正常工作。 –

+0

當你說它不起作用時,會發生什麼?當你輸入.win1:輸入時,它會提交表單?這不應該發生,可能需要更多細節。 –

+0

@DavidHoude,你是對的,我寫了一個jsfiddle,它絕對攔截了提交事件...我不知道爲什麼它不在現場工作!無論如何,我最終在Niels解決方案上使用了一個變體,所以非常感謝。 :) –

0

也許你可以用這個例子:

<html> 
    <head> 
    <script type="text/javascript"> 
    function CancelSubmit(e) 
    { 
    var keynum 
    var ret; 
    if(window.event) // IE 
    { 
     keynum = e.keyCode 
    } 
    else if(e.which) // Netscape/Firefox/Opera 
    { 
     keynum = e.which 
    } 

    if(keynum == 13) 
    { 
     var content = document.getElementById("container").innerHTML; 
     document.getElementById("container").innerHTML = content + "<p>submit canceled</p>"; 
     ret = false; 
    } 
    else 
    { 
     ret = true; 
    } 
    return ret; 

    } 
    </script> 
    </head> 
    <body> 
    <h1>CANCEL SUBMIT</h1> 

    <form method="post" action="Test-Submit.html"> 
    <input type="text" onkeypress="return CancelSubmit(event)" /> 
    <input type="text" onkeypress="return CancelSubmit(event)" /> 
    <input type="submit" value="submit"/> 
    </form> 
    <div id="container"></div> 
    </body> 
    </html> 
相關問題