Javascript替换按钮单击

时间:2013-03-13 16:25:29

标签: javascript

我正在运行一个小的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]"); 
}

3 个答案:

答案 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) {
    ...
}

请参阅http://jsfiddle.net/alnitak/XzrHP/

答案 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中查看replaceLinkstext = arguments[arguments.length - 1]