有没有一种更简单的方法可以使多个输入等于一个
Is there an easier way to make many inputs equal one?
好的,现在我正在写一个脚本,你必须知道事情发生的频率,以及我用"Monthly"表示每月一次的脚本。但很明显,人们可能不只是对"月刊"。
所以我写这封信是为了防止他们写其他东西。
if (RepeatDay === "once a month" || RepeatDay === "Once a Month" || RepeatDay === "every month" || RepeatDay === "month" || RepeatDay === "Month" || RepeatDay === "monthly"|| RepeatDay === "Once A Month"){
var RepeatDay = "Monthly"
}
问题是我有很多这样类型的输入,我想知道是否有更简单的方法。
您可以使用
if(RepeatDay.toLowerCase().indexof('month')>-1){
var RepeatDay = "Monthly";
}
但正如评论中所建议的,在这种情况下,最好给用户下拉列表,而不是文本输入
如前所述,我强烈建议用户从您控制的一组选项中进行选择。
不过,如果你真的想对照这样的列表进行检查,你有几个选项(很可能都与toLowerCase
结合起来,以减少你必须测试的东西的数量):
-
您可以使用Ankit演示的数组。
-
您可以使用
switch
语句,它还可以让您轻松地映射其他值,如"周",例如:switch (RepeatDay.toLowerCase()) { case "once a month"; case "every month"; case "month"; case "monthly": RepeatDay = "Monthly" break; case "weekly": case "once a week": RepeatDay = "Weekly"; break; // ... }
-
你可以使用一个对象作为地图,这再次使绘制"每周"地图变得容易,例如:
var repeatOptions = { "once a month": "Monthly", "every month": "Monthly", "month": "Monthly", "monthly": "Monthly", "weekly": "Weekly", "once a week": "Weekly", // ... };
然后:
RepeatDay = repeatOptions[RepeatDay.toLowerCase()]; if (!RepeatDay) { // Invalid option specified }
我建议您以不同的方式收集用户输入数据。
带有选项的下拉列表对您和用户都更有用。
其他答案可能会奏效。但是,请考虑用户仍然需要输入值——他们需要添加某些单词的数字,以便输入按预期工作。您将在代码中以许多不必要的解释消息或验证结束。
不知道你的确切建议,但在间隔类型(每月、每周、每年、每天)和输入类型编号之间进行选择的下拉列表应该有效,而且会更直观。
对于mi,这是您需要注意的有效值。
(x是随机次数)
每个月
xm
x表示月份
x倍
x M
每10个
一次m
每个m 的第一天
仅在六月
等等…
你不想要一个由一千个案例组成的数组,显然你无法验证单词month或单词m的存在(请再次查看六)。
您可以创建阵列
var arr=["once a month","Once a Month","every month","month" ,"Month","monthly","Once A Month"]
if(arr.indexOf(RepeatDay)!==-1){
RepeatDay='monthly';
}
注意:indexOf在IE<9所以你需要用的经典方式
for(var i=0;i<arr.length;i++){
if(arr[i]===RepeatDay){
RepeatDay="monthly";
break; //no need to check for further after a match is found
}
}
相关文章:
- 是否可以从输入处理程序中确定输入的类型
- 我可以使此幻灯片图像自动播放吗?
- 即使 ng 模型有值,也使输入字段为空
- 可以设置输入类型=文件的文本框的高度
- HTML/JavaScript拖动&Drop-是否可以使重影图像*NOT*看起来'冲洗掉'
- 使输入文本的背景图像在点击“”时滑出视野;输入“”;
- 有没有什么方法可以通过输入字段(type=file)来找出选择了多少个文件
- 如何使输入类型=“;电话“;按类型工作=“;密码”;
- 可以使 jquery 点击事件在所有其他点击事件之后执行
- 如何用document.createElement(“input”)方法使输入文本字段动态扩展
- 什么'是使输入上禁用的属性与Meteor辅助对象反应的最佳方法
- 是否有一个Javascript函数可以使代码在运行时延迟
- 有什么方法可以使页面无法刷新吗
- 使用chrome.downloads.download,是否可以使文件不弹出下载栏
- javascript是否有一个选项可以使句点与任何字符匹配,包括换行符
- 有一种方法可以使jslint在使用控制台时显示警告或错误
- 有没有任何方法可以使<选择>转到url
- 是否可以使输入像链接(Chrome)一样运行
- 是否有一种方法可以使输入元素上存在ngMaxlength属性,但使其具有值“0”;无限”;
- 有没有一种更简单的方法可以使多个输入等于一个