我正在运行一个小的javascript替换来替换按钮单击上的文本,我不明白为什么它不起作用。有谁能告诉我我做错了什么?
$("#button").click(function() {
$("#editme").value = replaceLinks($("#editme").val());
})
function replaceLinks(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"[url=$1]$1[/url]");
}
答案 0 :(得分:3)
两个问题。首先,$("#editme").value = replaceLinks($("#editme").val());
应为$("#editme").val(replaceLinks($("#editme").val()));
其次,您的按钮ID为id="#button"
,应为id="button"
<强> jsFiddle example 强>
答案 1 :(得分:2)
.value
通常是DOM Input元素的直接属性。用于访问或更改元素值的jQuery函数是.val()
有用的是,.val()
允许您传递一个函数来改变当前值。该函数传递元素的索引和当前值,函数的返回值替换原始值。您需要做的就是更改replaceLinks
函数的签名以允许index
参数(然后您可以放心地忽略)。
$("#button").click(function() {
$('#editme').val(replaceLinks); // calls `replaceLinks` to mutate its value
});
function replaceLinks(index, text) {
...
}
答案 2 :(得分:1)
一些问题:.value =
应为.val(
。它用于设置和获取值。您还将按钮ID设为#button
,但它应为button
。
如果您将$("#editme").val(replaceLinks);
的参数更改为replaceLinks
function replaceLinks(_, text) {
http://jsfiddle.net/ExplosionPIlls/zg4VB/5/
$("#button").click(function() {
$("#editme").val(replaceLinks);
})
function replaceLinks(_, text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"[url=$1]$1[/url]");
}
如果您还希望在字符串上使用replaceLinks
,也可以在arguments
中查看replaceLinks
:text = arguments[arguments.length - 1]