2013-04-29 2 views
0

Я вытягиваю текст из опций выбора. Теперь я передаю эту строку значение в функцию Append(), но я хочу, чтобы добавить дефис в строку, для вызова имя изображения:jQuery - Добавление дефиса внутри строки

HTML:

<select> 
    <option>Demo Cars</option> 
    <option>New Cars</option> 
    <option>Used Cars</option> 
    <option>Other</option> 
</select> 
var p = 'http://myurl.com/images/'; 
$('select').eq(0).on('change',function(){ 
    $('#productQuote').empty(); 
    var j = $(this).children(':selected').val(); 
    $('#productQuote').append('<img src="'+ p + j + '.jpg' '" />'); 
}); 

Например :

Если я выбираю первый вариант выбора, строка будет: «Demo Cars» и, следовательно, j == «Demo Cars».

Но теперь я хочу назвать его образ, а имена моих изображений не имеют пробелов внутри них. Итак, возникает вопрос, как добавить дефис между демонстрационными версиями и автомобилями? Метод замены()

ответ

1

Используйте метод replace(). Используя регулярное выражение с глобальным флагом заменит все пробелы в строке с черточками, даже если есть более чем одно пространство:

var j = $(this).children(':selected').val().replace(/ /g, '-'); 
+0

В попытке это, но слово как «Новые демо-автомобили» приводит к: «Новые демо-машины» ... он не вынимает последнее пространство ... – DextrousDave

+0

Извините, обновил неверный файл - ваш код работает. оценить! – DextrousDave

2

Использование:

var j = ... 
j = j.replace(" ", "-"); 

MDN documentation

+0

спасибо, но я пробовал все решения, моя функция не работает, даже когда я предупреждаю значение j после последней строки кода, предупреждение не выполняется ...он ломается где-то внутри строки append() – DextrousDave

+0

и о да, а как насчет строки с несколькими местами в ней? – DextrousDave

+1

в этом случае использует регулярное выражение с глобальным модификатором, как в ответе @MattCain :), но пока у вас есть одно место, используйте замену на строки – fcalderan

1

Есть много простых способов сделать это, каждый с другой цели в разы , Вот несколько простых способов сделать это «inline», не затрагивая большую часть вашего уже используемого кода:

С .replace() (Недостатком является то, что у вас есть несколько пробелов, это не заменит их все. может быть remidied с регулярным выражением, как я покажу ниже, или разделить присоединиться)

$('#productQuote').append('<img src="'+ p + j.replace(" ", "-") + '.jpg" />'); 

Заменить ALL стиль:

$('#productQuote').append('<img src="'+ p + j.replace(/ /g, "-") + '.jpg" />'); 

с командой .split().join()

$('#productQuote').append('<img src="'+ p + j.split(" ").join("-") + '.jpg" />'); 
+0

спасибо, но я пробовал все решения, моя функция не работает, даже когда я предупреждаю значение j после последней строки кода, предупреждение не выполняется ... он ломается где-то внутри строки append() – DextrousDave

+0

@DextrousDave Я видел, что вы «одинарные кавычки» были отключены, я исправил – SpYk3HH

+0

. Я вижу, что ваш код делает то же самое, что и Fabrizio внизу - он работает только для строки с одним пробелом в ... что, если у вас есть такое слово: «New Demo Легковые автомобили"? – DextrousDave

0

Пожалуйста, обратитесь http://jsfiddle.net/2dJAN/6/

<div class="btn-post">button text</div> 
<div id='test'> </div> 


$(document).ready(function(){ 
$('#test').html($('.btn-post').text().replace(" ", "-")); 
}); 

Я надеюсь, что это полезно для вас, чтобы достичь вашего запроса.

1

Вам не нужно делать это в JavaScript, поскольку это может быть достигнуто при разметке, тэг <option> имеет атрибут value, который вы должны использовать, поскольку это отделяет любые данные логики и представления.

Например, используя разметку ниже, вы можете использовать метод .val(), как вы уже есть, но он вернет value, а не текст.

<select> 
    <option value="demo-cars">Demo Cars</option> 
    <option value="new-cars">New Cars</option> 
    <option value="used-cars">Used Cars</option> 
    <option value="other">Other</option> 
</select> 
+0

Да, это хорошее наблюдение, но это используется в wordpress, где человек, загружающий изображение, не знает, где установить какие-либо атрибуты чего-либо ... – DextrousDave