Javascript和php在不同浏览器中的执行优先级

标签 javascript php

我有一个简单的 JS 语句,它可以“保护”我免于在网站的登录表单中使用特殊字符:

$("#login_button").click(function(){
    formChecker();
});

function formChecker() {

    var checkLogin = document.forms["loginForm"]["username"].value;

     if ((checkLogin.indexOf("!") > -1) || (checkLogin.indexOf("@") > -1) || (checkLogin.indexOf("#") > -1)) {
        alert("Special characters not allowed! Please use A-Z and numbers.");
        document.location = "http://mywebsite.com/";
    }
}

它在 Chrome 中运行良好。每当有人使用这些字符之一时,他就会立即被重定向,因此 php 登录脚本不会被执行。

当我在 Internet Explorer 中使用它时会出现此问题。它实际上重定向了我的页面,但无论如何都会执行 php 脚本。我也尝试过 window.location 但它在 IE 中根本不起作用。这个浏览器有什么问题吗?不同浏览器中scipt优先级是否不同?

我的意思是,在 IE 上,即使用户被重定向,当他返回网站时,他已经登录,但他不应该登录。 Chrome 浏览器不会登录用户,因为页面被重定向,这就是它应该如何工作。

最佳答案

这不是进行表单验证的方法。不保证会在按钮上调用 click(例如,可以通过按 Enter 键提交表单);您不会通过重定向来阻止表单提交(这是可能首先发生的竞争条件);而且警报和重定向对用户非常不利。

您应该在表单本身上选择 submit 事件,如果您不希望提交表单,则取消该事件。例如,将带有 id="formErrorMessage" 的 div 添加到页面,然后:

var goodUsernamePattern = /^[a-zA-Z0-9_-]+$/;

$('#loginForm').on('submit', function(event) {
     if (!goodUsernamePattern.test(this.username.value)) {
         event.preventDefault();
         $('#formErrorMessage').text('Please enter a good username blah');
     }
});

关于Javascript和php在不同浏览器中的执行优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38777492/

相关文章:

c# - 如何制作 XML 或 JSON 配置文件并在 JavaScript 中反序列化?

javascript - 谷歌地图标记上的复选框

JavaScript - 使用变量替换子字符串

javascript - 通过 JQuery 获取动态内容的 ID

php - 用于返回安全图像 URL 的 Amazon ECS API

javascript - 在javascript中获取超链接的值

javascript - 让 promise 在返回前等待几秒钟

php表单使用标题定位方法传输到第二页并返回

javascript - 在 PHP 或 JS 中自动从文本和默认图像创建图像文件?

php - shell_exec() 不执行 pdftotext 命令