function onfocus(event) {
if ($(this).val() == "Some Arbitrary Text") {$(this).val("");}
}
使用jQuery或JavaScript,我想找到“任意文本”。除“任意文本”外,此文本块是常量。理想情况下,我想要一种解析它的方法,而无需使用复杂的循环和正则表达式。
帮助澄清: 文本是javascript的事实不起作用。把它想象成我正在解析的文本。 “任意文本”可以是任何内容,我试图在两个引号之间找到文本。
答案 0 :(得分:20)
并非我完全理解这个问题,但也许
var s = 'foo "quoted" bar';
var m = s.match(/"(.*?)"/);
alert(m[1]); // m[1] = quoted
当然,没有正则表达式也可以这样做,但这没有任何意义 - 这就是正则表达式
答案 1 :(得分:1)
var text = $(this).val().replace(/"(.*?)"/ig, "$1");
答案 2 :(得分:0)
您的问题有点令人困惑 - 您是否希望查看大字符串是否包含较小的字符串?如果是这样,请使用indexOf
函数,如下所示:
function onfocus(event) {
if ($(this).val().indexOf("Some Arbitrary Text") > 0) {
$(this).val("");
}
}
答案 3 :(得分:0)
var stringToSearchFor = 'if ($(this).val() == "';
var haystack = 'put your javascript code here';
var startPosition = haystack.indexOf(stringToSearchFor);
答案 4 :(得分:0)
如果我正确地解释你的问题,你只需要一个正则表达式:
astring = "oh hai I'm a string my name is \"Arbitrary Text\"";
results = astring.match(/"[\d\w\s]*"/g);
正则表达式/"[\d\w\s]*"/
将匹配引号之间出现的任何数字,单词或空白字符。后缀g
表示搜索是全局的,并返回所有匹配的数组。删除g只会返回第一个结果。
在这种情况下,match()
返回1个成员的数组:['"Arbitrary Text"']
。是的,它包括引号。要删除它们:string = string.replace(/"/g, '');
如果在文本中找不到匹配项,则返回Null。
Good javascript-regexp cheatsheet here.
修改强>
既然我们理解了这样做的理由,我就不得不建议不要这样做。
有多种方法可以将表单输入的文本与其默认值进行比较。例如,您可以将默认值存储在全局JS变量中,或者作为html元素本身的属性存储。
这并不是说您的方法“错误”,但此代码对此有严重的aroma。
答案 5 :(得分:0)
我想你实际上是在输入元素中显示某种“邀请”消息,例如:“把你的名字放在这里”在文本输入中。当然,一旦用户专注于该输入,您希望此邀请消失,并且如果用户未在输入中放入任何内容,则重新显示该邀请。意图是对的,但你的方法有点脏,不可靠。我会改用变量。
由于您的输入是动态添加的,只需将变量添加到<脚本> html注入后立即标记。例如:
document.write('<input id="controller24" type="text" name="email" value="Put your name here"/><script>var controller24Default="Put your name here";</script>');
之后,您应该将该控制器绑定为一个泛型函数,该函数从输入id值中重构默认变量。 var thisDefaultValue = eval("controller"+this.id+"Default")
。只是一个想法。