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

2 つの問題。まず、$("#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は、チェックインすることもできargumentsますreplaceLinkstext = arguments[arguments.length - 1]

于 2013-03-13T16:33:01.323 に答える