检查文本区域内的可变文本

时间:2018-09-19 15:02:16

标签: jquery

我在config.php页面中有一个textarea,可以在其中保存带有替换为PHP的占位符的文本,然后再加载到另一个页面send.php中:

我的占位符类似于:{name},{surname},{others},{sometext},...

示例页面config.php

<textarea>Dear {name}, this is the list of your products: {others}</textarea>

然后,当我加载send.php时:

<?php

$info_user = get_info_user($id);

$text = load_text_from_page_config();

$replacements = array(
                '({name})' => $info_user['name'], //John
                '({surname})' => $info_user['surname'] //Smith
            );
            $text = preg_replace( array_keys( $replacements ), array_values( $replacements ), $text);

echo '<textarea>' . $text . '</textarea>';

因此在本例中,我得到:

<textarea>Dear John, this is the list of your products: {others}</textarea>

当我单击提交按钮时,我想检查我的文本区域中是否还有一些占位符。 (在我的情况下,{others}不存在)。在这种情况下,我想在JavaScript / jQuery中显示警报:

alert("There are still placeholder in your text. Retry again");

我的最后一个问题是:如何用jQuery和{和}分隔文本,但是我不知道其中确切的文本呢?

$(document).ready(function(){

  $("#submit-button").on("click", function(e) {

    e.preventDefault();

    var text = $("textarea").val();

    if ( //here the check ) {

    return false;   

    }

  });

});

2 个答案:

答案 0 :(得分:2)

要实现此目的,您可以使用正则表达式来查找{}中包含的所有值:

$('textarea').each(function() {
  var hasTags = /\{.*\}/gi.test($(this).text());
  console.log(hasTags);
});
textarea { width: 100%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea>Lorem ipsum {dolor} sit amet consectetur adipiscing {elit}</textarea>
<textarea>Lorem ipsum dolor sit amet consectetur adipiscing elit</textarea>

请注意,这是一个贪婪的匹配,因此,如果在文本区域的任何点上有一个{后跟一个},它将通过该测试。

答案 1 :(得分:0)

您可以按以下方式使用正则表达式

const regex = /\{.*?\}/gm;
let matches;
if((matches = regex.exec(text)) !== null) {
 //do whatever you want
}