0

我正在运行一个小的 javascript 替换来替换按钮单击上的文本,但我看不出它为什么不起作用。谁能告诉我我做错了什么?

http://jsfiddle.net/zg4VB/2/

$("#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]"); 
}
4

3 回答 3

3

两个问题。首先$("#editme").value = replaceLinks($("#editme").val());应该是$("#editme").val(replaceLinks($("#editme").val()));

其次,您的按钮 ID 曾经id="#button"并且应该是id="button"

jsFiddle 示例

于 2013-03-13T16:29:39.633 回答
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) {
    ...
}

http://jsfiddle.net/alnitak/XzrHP/

于 2013-03-13T16:28:01.003 回答
1

几个问题:.value =应该是.val(. 它用于设置和获取值。您也将按钮 ID 设置为#button,但它应该只是button

如果您$("#editme").val(replaceLinks);将参数更改replaceLinksfunction 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在字符串上使用,您也可以签argumentsreplaceLinkstext = arguments[arguments.length - 1]

于 2013-03-13T16:33:01.323 回答