2015-04-01 48 views
3

我有一個相當複雜的表單,它有多個不同的文本區域和文本區域。它在默認使用的條形碼中使用的環境,這是在他們使用它們掃描多種產品時的選擇,因此關閉輸入功能已成爲不可行的。防止用戶點擊Enter除了Textarea

我正在使用表單嚮導腳本來處理輸入階段的客戶端驗證。該腳本在填寫表單過程中被輸入鍵打斷,並拒絕提交,直到頁面刷新。

<a href="javascript:;" class="btn green button-submit">Submit <i class="m-icon-swapright m-icon-white"></i></a> 

我有下面的代碼,它可以防止在窗體上輸入並允許表單在單擊上面的鏈接時提交。

$(window).keydown(function (event) { 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
     return false; 
    } 
}); 

但是這樣可以防止在textarea中使用enter。我做了一些研究,並使用is()操作者的jQuery

$(document).ready(function() { 
    $(window).keydown(function (event) { 
     if (event.keyCode == 13 && !event.is("textarea")) { 
      event.preventDefault(); 
      return false; 
     } 
    }); 
}); 

這不起作用嘗試,它未能防止輸入回車鍵,並從提交之前,因爲它沒有攤位的形式。

最後,這是處理提交表單的JavaScript,如果驗證通過表格上

$('#form_wizard_1 .button-submit').click(function() { 
    // Can put more onsubmit processing here 
    document.getElementById('submit_form').submit(); 
}).hide(); 

任何人都可以建議我如何防止除了文字區域的所有輸入回車鍵。我不會假裝成爲JavaScript開發人員,儘管我正在努力學習。我已閱讀並任以下是文章試圖適應代碼或未能理解它是如何應用到我以正確的方式:

Prevent users from submitting a form by hitting Enter

Prevent Users from submitting form by hitting enter #2

disable enter key on page, but NOT in textarea


*關於最後一個鏈接,我需要一個全局解決方案,自動阻止它可能存在於表單中的所有textareas。

一如既往,感謝您的協助。

+2

您是否嘗試過使用'$(event.target)。是(」! textarea「) – 2015-04-01 04:21:29

+0

我不完全確定你正在使用什麼*腳本,它是如何得到*中斷* ... – 2015-04-01 04:26:46

+0

我不知道這是通過我的研究存在,你可以張貼這是一個適當的r eply所以我可以upvote和接受它,這是按預期工作。 – Tarquin 2015-04-01 04:30:28

回答

8

使用!$(event.target).is("textarea")
還可以使用(而不是event.keyCode; jQuery的正常化它Xbrowser中)event.which

jQuery(function($) { // DOM ready 
 

 
    $(document).on("keydown", function(e) { 
 
    if (e.which === 13 && !$(e.target).is("textarea")) { 
 
     e.preventDefault(); 
 
     console.log("ENTER PREVENTED"); 
 
     return; 
 
    } 
 
    }); 
 

 
});
<form action=""> 
 
    <input name="inp" type="text" placeholder="Click here and hit Enter"> 
 
    <textarea name="txa" id="" cols="30" rows="4" placeholder="Click here and hit Enter"></textarea> 
 
    <input type="submit"> 
 
</form> 
 

 
<script src="//code.jquery.com/jquery-3.1.0.js"></script>

+0

我做了一個快速搜索 - 但是要驗證,console.log不會在不支持這些調試功能的瀏覽器中出現問題(又名FireBug或chromes內置調試) – Tarquin 2015-04-01 04:37:40

+1

尼斯.. @Roko +1 – 2015-04-01 05:49:12