Автор Тема: Как найти подстроку в строке html  (Прочитано 641 раз)

29 Сентябрь 2015, 10:30:53
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем доброго дня.
Есть некая строка в переменной  $ name
Вторая  строка в переменной  $ name_s
Необходимо найти подстроку  $ name_s  в строке $ name.
Задача вроде простая но только на javascript
var our_string = $ name;
if(our_string.indexOf($ name_s) + 1) {
   alert("подстрока найдена");
}else{
   alert("подстрока не найдена");
}
А вот можно, или нет сделать поиск вхождения средствами html не javascript
Или как это решить в html
Спасибо!
29 Сентябрь 2015, 11:27:30
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
HTML - язык разметки текста. Он не создан для таких задач.
Это задача решается с помощью языков программирования javascript или php.
29 Сентябрь 2015, 12:16:58
Ответ #2
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все понятно. Я так и знал, но думал что в html5 что-то новое. Спасибо за ответ! Но может подскажите как решить вот это..
В файле input_text_lang.tpl  есть следующий скрипт..
<input type="text"
id="{$input_name}_{$language.id_lang}"
class="form-control {if isset($input_class)}{$input_class} {/if}"
name="{$input_name}_{$language.id_lang}"
value="{$input_value[$language.id_lang]|htmlentitiesUTF8|default:''}"

Задача следующая.
В переменной $input_name определить есть ли вхождение текста «label»
Если есть, то 
value="..тут свой текст.."Если нет,  то
value="{$input_value[$language.id_lang]|htmlentitiesUTF8|default:''}"
29 Сентябрь 2015, 12:23:04
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В теге <label> тоже переменная?
29 Сентябрь 2015, 12:27:22
Ответ #4
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет это текст поиска "label" не переменная.
29 Сентябрь 2015, 12:30:52
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
29 Сентябрь 2015, 12:41:37
Ответ #6
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это да..
Но как в функции javascript установить зачение value
Этот скрип то подходит

<script type="text/javascript">
function countText($input_name) {
var our_string = $input_name;   
if(our_string.indexOf("label") + 1) {
   alert("подстрока найдена");
}else{
   alert("подстрока не найдена");
}
}

</script>
Но как это применить к этому вопросу.
29 Сентябрь 2015, 12:49:23
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
{addJsDef myvar = $input_value[$language.id_lang]|htmlentitiesUTF8}
my_text = 'текст из label';
if ((pos = my_text.indexOf('myvar') > -1) {
    alert("подстрока найдена");
}
29 Сентябрь 2015, 13:16:59
Ответ #8
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да вы правы но....
Найти то мы найдем сравнение выполним.. вопрос то в том что когда найдем то value нужно присвоить другое значение не
value="{$input_value[$language.id_lang]|htmlentitiesUTF8|default:''}"а такое value="мой текст"

if ((pos = my_text.indexOf('myvar') > -1) {
    alert("подстрока найдена");
вот здесь вернуть новое значение и присвоить его value, например value="подстрока найдена".... ну к примеру
}

То-есть если подстрока найдена то в скрипте должно быть
                      <input type="text"
id="{$input_name}_{$language.id_lang}"
class="form-control {if isset($input_class)}{$input_class} {/if}"
name="{$input_name}_{$language.id_lang}"
в место      value="{$input_value[$language.id_lang]|htmlentitiesUTF8|default:''}"надо                 value="подстрока найдена"
А если подстрока не найдена то в этом скрипте
                      value="{$input_value[$language.id_lang]|htmlentitiesUTF8|default:''}"
Может через промежуточную переменную, например $textValue
29 Сентябрь 2015, 13:51:53
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Присвоить другое значение вы можете без проблем. Замените
alert("подстрока найдена");на свой текст
textValue = 'подстрока найдена';добавьте
else
    textValue = myvar;
29 Сентябрь 2015, 15:05:11
Ответ #10
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо DarinSr за консультацию. Очень благодарен.
Последний вопрос и все..
Можно как-то так вызвать функцию javascript в html
value="javascript: testFunction($input_name,$textvalue);" тогда в функции с помощью return можно присвоить значения какие надо.
Так
value="javascript: testFunction($input_name,$textvalue);" не работает.
Можно конечно через
<onload="testFunction($input_name,$textvalue);">Но хотелось бы сразу результат работы функции присвоить value через возврат return


 
29 Сентябрь 2015, 16:03:55
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если нужно подставить значение при загрузке страницы, то
$(document).ready(function(){
        // здесь меняете значение текста в элементе input id="{$input_name}_{$language.id_lang}"
});
29 Сентябрь 2015, 16:51:18
Ответ #12
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо большое вам  DarinSr лично за консультацию, и потраченное на меня время.
Очень приятно работать , когда дают чистые, нормальные советы.
Есть такая пословица-: Одна голова хорошо, две лучше!
Спасибо еще раз!! Всего вам доброго!
По вашим советам  буду, проигрывать  все варианты, и точно все получиться…
Всем на форуме, всего хорошего!