2017-09-04 47 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); 
    } 
} 

}); 
相关问题