2016-09-13 3 views
-1

Я хочу использовать каждую из опций выбора, которые исходят из Sql. Теперь, следующий код работает отлично - но только на первом поле ...Функция запуска JQuery для каждого поля

function capitalize(str){ 
var text = str.text().replace(/^(.)|\s(.)/g, function($1){ return $1.toUpperCase(); }); 
return str.text(text); 
}capitalize($('#op')); 

Мои Html полей выглядит примерно так (я работаю с PUG/JADE и это мой лучший за попытку преобразования для демонстрационных целей):

<select class="select_input"> 
<option value=$emp['id'] id="op" selected="selected">$emp['value']</option>* 
<?php foreach ($type as $type_val) ?> 
<option value=$type_val['id']>$type_val['val']</option> 
<?php endforeach?> 

<select class="select_input"> 
<option value=$emp['id'] id="op" selected="selected">$emp['value']</option>* 
<?php foreach ($type as $type_val) ?> 
<option value=$type_val['id']>$type_val['val']</option> 
<?php endforeach?> 
  • Первое значение, которое приходит из БД.

Как я упоминал ранее, скрипт работает только на первом поле ...

+0

Почему вы не используете на стороне сервера? – user489872

+0

ID должен быть уникальным. Используйте функцию '$ ('. Select_input option'). Text (function (i, t) {return t.replace (/^(.) | \ S (.)/G, function ($ 1) {return $ 1.toUpperCase() ;}}); ' – Tushar

ответ

1

Вы используете id в неправильном направлении. Каждый идентификатор должен быть уникальным для html-страницы.

// will work only for first object 
capitalize($('#op')) 

Попробуйте использовать классы вместо

<select class="select_input"> 
<option value=$emp['id'] id="op" class="option" selected="selected">$emp['value'] </option>* 
<?php foreach ($type as $type_val) ?> 
<option value=$type_val['id'] class="option">$type_val['val']</option> 
<?php endforeach?> 


capitalize($(".option")) 
+0

aleksv - Это был мой первый вариант ... но это довольно сложно, потому что я использую методы конкретного проекта, которые нельзя изменить ... Sensei James - Спасибо - к сожалению, он создает другая проблема ... теперь я получаю весь массив в каждом поле .. вместо его одного значения ..... – user3387719

+0

Я обновил свой ответ, вам совсем не нужен JS. –

0

Вы можете просто использовать CSS, чтобы извлечь выгоду каждый выпадающий пункт:

#op > option { 
    text-transform: capitalize; 
} 
0

Got это .... никакой другой способ, то сервер сторона к сожалению

public function capitalize($arr) 
    { 
    foreach ($arr as $key => $val) { 
     $data[$key] = ucfirst($val); 
    } 

     return $data; 
    }//end capitalize() 
Смежные вопросы