2017-09-04 50 views
1

我試圖阻止在除了2之外的所有頁面上按空格按鈕,其中我擁有textareas。我需要這些textarea頁面上的空格,以便用戶可以輸入他們的支持票據消息。我嘗試了很多不同的方式來做到這一點,並找不到一種工作方式。我花了大約整整一週的時間來嘗試這個小小的錯誤。我認爲是時候得到一些幫助。Javascript - 在除2之外的所有頁面上禁用空格

錯誤是,當我使用下面的代碼時,它告訴我,我不能使用空格(並防止空格),儘管我在其中一個頁面上,我說不要運行腳本。

我當前的代碼是:

$(document).keydown(function(event) { 

var myUrl_one = '/panel/staff?page=tickets'; 
var myUrl_two = '/panel/support'; 

var currentUrl = window.location.pathname; 

if(currentUrl != myUrl_one || currentUrl != myUrl_two) { 
     if (event.which == 32) { 
      event.preventDefault(); 
      $.Notification.autoHideNotify('error', 'top right', 'Keyboard Error!', 'No spaces are allowed here!'); 
     } 
} 

}); 
+0

我認爲你需要更換''||用''&&在'if'條件。 – Airwavezx

+0

@Airwavezx好吧,我有,但現在只能在我的myUrl_two網址上工作,而不是我的myUrl_one。 – Benza

+0

嘗試調試它。使用'console.log(currentUrl,myUrl_one)'看看它們是否相等。我最好的猜測是他們不是,你的代碼中有一個小錯誤。 – Airwavezx

回答

0

你的第一個問題在於:你如果條件:(!CURRENTURL = myUrl_one || CURRENTURL = myUrl_two)將永遠是正確的。

您需要使用& &操盤手:

if(currentUrl != myUrl_one && currentUrl != myUrl_two) { 
} 

延伸閱讀:Logical Operators

+0

我認爲它在兩頁上都有效,但是當我去myUrl_one頁面上試試時,它給了我空間錯誤。 – Benza

+0

你確定你的路徑正確嗎?使用您的控制檯調試window.location.pathname並與myUrl_one和myUrl_two的值進行比較。 – RogerC

1

感謝@RogerCageot和@Airwavezx,我已經找到了問題。

首先,我需要改變我的||運營商& &在我的if語句,像這樣:

if(currentUrl != myUrl_one && currentUrl != myUrl_two) { 

其次,javascript函數window.location.pathname只獲取原始路徑位置,而不是GET參數。由於我試圖獲得/panel/staff?page=tickets,因此它沒有讀取?page=tickets。這只是閱讀/panel/staff

我完全工作的代碼如下:

$(document).keydown(function(event) { 

var myUrl_one = '/panel/staff'; 
var myUrl_two = '/panel/support'; 

var currentUrl = window.location.pathname; 

if(currentUrl != myUrl_one && currentUrl != myUrl_two) { 
    if (event.which == 32) { 
     event.preventDefault(); 
     $.Notification.autoHideNotify('error', 'top right', 'Keyboard Error!', 'No spaces are allowed here!'); 
     console.log(currentUrl, myUrl_one); 
    } 
} 

}); 
相關問題