2013-07-01 2 views
0

У меня есть эта строка внутри входного файла.jQuery изменить только часть строки

<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'); 

Спасибо за любую помощь

+0

Вы пытались с помощью регулярных выражений? –

ответ

4

Вы можете использовать regular expression:

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

Passing a function to .attr позволяет легко изменять существующее значение.

Объяснение выражения:

id= // literally matches "id=" 
\d+ // matches one or more digits 
$ // matches the end of the line/string 
+0

Голосование, это более элегантно, чем использование строковых функций ... –

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

Но, лучшим решением является использование регулярных выражений.

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 
+0

Его хорошая идея поставить некоторое описание с ответом, а не только блок нового текста. – Jamiec

+0

Код очень хорошо прокомментирован, и комментарии отлично сочетаются с описанием, IMHO. –

0

простой способ с использованием регулярных expresion

newBox.find('input.wizard_image').attr('data-url', 
     newBox.find('input.wizard_image').replace(/id\=[0-9]{0,}/gi, "something-else") 
); 
Смежные вопросы