我正在尝试制作一个基于文本的游戏,并且我需要使用Javascript和/或jQuery从textarea元素的用户输入中搜索某些子字符串,以触发唯一的响应。
我尝试使用PHP将输入作为表单数据提交,但是出于我的代码的目的,使用JS / jQuery更简单。我目前正在使用indexOf()方法。
var substr = "test substr";
function test() {
var textareaVal = $("#wiyetxt").val();
if (substr.indexOf(textareaVal) !== -1) {
alert("Found");
}
else {
alert("Nope");
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="wiyetxt"></textarea>
<input type="button" onclick="test();" value="Send">
<input type="reset" value="Clear">
我希望我的函数在我的输入包含字符串“ test substr”时向“ Found”发出警报,但是如果子字符串中的任何字母顺序出现,它将向“ Found”发出警报。例如,“ t”,“ es”和“ substr”都会警告“ Found”以及确切的字符串。但是,如果我在字符串中添加任何内容,它都会提示“ Nope”,例如,“ test substr test substr”返回“ Nope”。为什么会发生这种情况?
答案 0 :(得分:4)
这是因为您正在查找变量的子字符串,而不是查找输入字符串的子字符串。
您将希望像这样翻转indexOf的参数:
if (textareaVal.indexOf(substr) !== -1) {
答案 1 :(得分:1)
除非我有误解,否则我认为问题是您正在尝试检查substr
是否包含文本区域中的值,但实际上您应该检查相反的。即文本区域中的值是否包含子字符串?
尝试翻转以下表达式:
substr.indexOf(textareaVal)
到
textareaVal.indexOf(substr)
答案 2 :(得分:-1)
ES6方式:
if (textareaVal.includes(substr)) {
alert("Found");
} else {
alert("Nope");
}