2015-02-23 37 views
1

我有两个字段可以输入多年,输入一个文本框输入VIN号码。我有regEx正是我想要它的工作方式,但我遇到的问题是如果一年没有选择,它仍然有效,因为VIN正在等待一年。我如何输入既不存在的日期,也不输入“选择年份”以同时适用于RegEx?下拉列表的默认值也适用于正则表达式

当我做的console.log(日期),则返回0,并且验证打到第二正则表达式,因为它是0小于1981

不知怎的,我必须写低于1981年但大于0我尝试了很多不同的组合,似乎无法找到正确的答案。

var date = Number($("#vehicleyear").val()); 
    var re; 
    if (date >= 1981) { 
    re = new RegExp("^[A-HJ-NPR-Za-hj-npr-z\\d]{8}[\\dX][A-HJ-NPR-Za-hj-npr-z\\d]{2}\\d{6}$"); 
    } else if (date < 1981) { 
    re = new RegExp("^[A-Za-z\\d]{2,17}$"); 
    } else {} 
    return vin.match(re); 
}, 'Please enter valid VIN.'); 

我试着在else语句中应用regEx,但也没有工作。 (话说如果任何东西,但仍然适用的正则表达式)

HTML

<label for="vehicleyear">Year:</label> 
    <select name="vehicleyear" id="vehicleyear" required> 
    <option value="" selected="selected">Select Year</option> 
    <option value="2017">2017</option> 
    <option value="2016">2016</option> 
    <!-- And so on --> 
    </select> 
+0

为什么不在检查VIN之前检查是否选择了一年?另外,空白的“else {}”有什么意义? – Adjit 2015-02-23 22:02:00

+0

您的表单的HTML是什么样的?另外,它看起来并不是上面的全部函数 – Adjit 2015-02-23 22:08:18

+0

对,那么HTML的外观与下拉菜单相似吗?每个菜单选项都必须有一个值。什么是默认的空值? – Adjit 2015-02-23 22:58:02

回答

1

好,转化为一个号码为空字符串为0,你想要做什么是永远如果失败值为零,所以换句话说,就是这样的:

if(date <= 0) 
{ 
    return false; 
} 
// other if() after 
var re; 
if (date >= 1981) 
{ 
... 
+0

第二个if()的else部分是日期小于1981的时候。但是我认为你的主要问题是没有选择日期的情况。 – 2015-02-24 03:52:51