繁体   English   中英

我的JavaScript似乎没有运行

[英]My JavaScript doesn't seem to run

我目前正在尝试创建一个正则表达式以在输入字段中工作。 JavaScript本身在JS Chrome控制台中不返回任何错误,但是由于onLoad()甚至无法正常工作,我感到非常困惑。 这是我的网站,如果您想自己看的话:users.aber.ac.uk/mta2/cs25010

<script>
        var regEx = new RegExp("[0-9]+\.[0-9][0-9]");
        var regEx2 = new RegExp("[0-9]+");
        function validateFilter()
        {
            var input = document.forms["filterPrice"]["price"].value;
            if(regEx.test(input) == true || regEx2.test(input) == true)
            {
                alert("Input must be only numbers. Decimal allowed");
                return false;
            }
        }

        function onLoad()
        {
            alert("HI");
        }
    </script>

<form name="filterPrice" action="homepage.php" method="GET" onsubmit="return validateFilter()">
        <select name = priceSelect> 
            <option value = "Greater"> Filter prices greater than </option>
            <option value = "Less"> Filter by prices less than </option>
        </select>
        <input id ="priceInput" name="price" type ="text">  </input>

        <button> Go </button>
</form>

您必须像这样将if语句更改为false

if(regEx.test(input) == false|| regEx2.test(input) == false)

您没有在解释validateFilter到底有什么问题。 但是从函数和正则表达式来看,很明显它们并没有执行您想做的事情。

如果要检查字符串是否包含数字或小数(例如x.xx则您的表达式应为

^\d+(\.\d{2})?$

重要的部分是^$ 它们锚定表达式,因此整个字符串必须与模式匹配,而不仅仅是字符串的一部分 例如,您的表达式( new RegExp("[0-9]+")也匹配"foo9""123foobar"

另一个表达式new RegExp("[0-9]+\\.[0-9][0-9]")也不正确。 它不仅匹配0.00而且匹配0x00 这是因为您使用的是字符串来定义表达式,并且\\也是字符串的转义字符。 因此,您创建的表达式实际上是[0-9]+.[0-9][0-9] ,其中. 匹配任何字符。

此外,如果表达式匹配,你要显示的警告,即当regEx.text(input)返回false ,不是true

修改后的代码:

var regEx = /^\d+(\.\d{2})?$/;

function validateFilter() {
    var input = document.forms["filterPrice"]["price"].value;
    if (!regEx.test(input)) {
        alert("Input must be only numbers. Decimal allowed");
        return false;
    }
}

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM