0

入力ファイル内にこの文字列があります。

<input type="file" data-url="/modules/wizard/upload.php?eid=18000115&amp;type=ico&amp;case=protagonist&amp;id=121001118" value="" class="wizard_image" name="files">


data-url="/modules/wizard/upload.php?eid=18000115&amp;type=ico&amp;case=protagonist&amp;id=121001118"

この文字列の中で、最後のパラメーターのみを変更したいと思います。属性id=121001118の値全体ではなく、別のものを使用します。data-url

どうすればいいですか?以下のものは、私が探しているものではない文字列全体を変更します。

newBox.find('input.wizard_image').attr('data-url', 'somethingElse');

助けてくれてありがとう

4

4 に答える 4

4

正規表現を使用できます:

newBox.find('input.wizard_image').attr('data-url', function(i, val) {
    return val.replace(/id=\d+$/, 'id=somethingElse');
});

に関数を渡すと.attr、既存の値を簡単に変更できます。

式の説明:

id= // literally matches "id="
\d+ // matches one or more digits 
$   // matches the end of the line/string
于 2013-07-01T13:29:27.600 に答える
0

文字列関数を使用します: substring, replace.

var str = 'data-url="/modules/wizard/upload.php?eid=18000115&amp;type=ico&amp;case=protagonist&amp;id=121001118"';

var id = str.substring(str.indexOf(";id=") + 4);

str = str.replace(id, "something...");

JSFIDDLE

しかし、より良い解決策は正規表現を使用することです。

于 2013-07-01T13:29:34.273 に答える
0
var newID = 123435465;                       // the new Id you'd like to put into the URL
var $el = newBox.find('input.wizard_image'); // take the reference of the element
var oldURL = $el.data('url');                // get the data-url
var newURL = oldURL.replace(/id=[0-9]+/, newID);// replace the id=number pattern by newID
$el.data('url', newURL);                        // set it to a new one by replacing 
于 2013-07-01T13:29:46.003 に答える
0

正規表現を使用した最も簡単な方法

newBox.find('input.wizard_image').attr('data-url', 
        newBox.find('input.wizard_image').replace(/id\=[0-9]{0,}/gi, "something-else")
);
于 2013-07-01T13:30:49.803 に答える