首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将作为PHP结果创建的字符串提供给我的javascript

如何将作为PHP结果创建的字符串提供给我的javascript
EN

Stack Overflow用户
提问于 2019-01-04 02:33:41
回答 1查看 69关注 0票数 0

我想在我在变量选择器上指定的输入字段中创建一个word检查脚本。从数据库中提取单词列表。我已经为数据库提供了查询。数据库的结果如下

代码语言:javascript
复制
>Array
>(
>[0] => Skype
>[1] => Phone
>[2] => Whatsapp
>[3] => Mobile
>[4] => Gmail
>[5] => email
>[6] => viber
>)

我使用上面的单词在我的javascript中创建if语句的字符串。$a的结果是

代码语言:javascript
复制
 $(selectors)[0].value.search(/Skype/i) !== -1 || $(selectors) 
   [0].value.search(/Phone/i) !== -1 || $(selectors) 
   [0].value.search(/Whatsapp/i) !== -1 || $(selectors) 
   [0].value.search(/Mobile/i) !== -1 || $(selectors)>> 
   [0].value.search(/Gmail/i) !== -1 || $(selectors) 
   [0].value.search(/email/i) !== -1 || $(selectors) 
   [0].value.search(/viber/i) !== -1 

之后,我尝试将此字符串作为条件传递到脚本中,每次它都会执行警报。我希望它只在单词匹配时执行。

我已经试过写作了

代码语言:javascript
复制
$(selectors)[0].value.search(/Skype/i) !== -1 || $(selectors) 
[0].value.search(/Phone/i) !== -1 || $(selectors) 
[0].value.search(/Whatsapp/i) !== -1 || $(selectors) 
[0].value.search(/Mobile/i) !== -1 || $(selectors) 
[0].value.search(/Gmail/i) !== -1 || $(selectors) 
[0].value.search(/email/i) !== -1 || $(selectors) 
[0].value.search(/viber/i) !== -1

在if语句中,它工作得非常好,但我想这样做的原因是,我不想每次想要添加单词时,回到代码并在if语句中添加另一行。

代码语言:javascript
复制
<?php
//testing
$words = array();
$a='';
foreach($db->getRecordSet('SELECT * FROM conversationKeywords WHERE     conStatus = :conStatus',array(':conStatus'=>1)) as $results){
    array_push($words,$results['conKeyWord']);
}
/* //DEVELOPER DEBUGGIN PURPOSES ONLY, UNCOMMENT ON DEVELOPER MACHINE
echo '<pre>';
print_r($words);
echo '</pre>';
*/
foreach($words as $values){
    if(!next($words)) {
        $a.= '$(selectors)[0].value.search(/'.$values.'/i) !== -1';
    }
    else{
        $a.= '$(selectors)[0].value.search(/'.$values.'/i) !== -1 || ';
    }
}
//echo $a;
?>

<script>
    var selectors = "#msg_text,#Message_Text,#job-desc";
    var conditions = <?php echo json_encode($a) ?>;
    console.log(conditions);
    $("body").on("keyup",selectors,function(conditions){

        if(warning !== true){

            //var v = $('#msg_text').val();

            if (conditions){

                //alert("Warning! For safety and quality     assurance, Please note that we kindly request all parties to communicate only     through us.");

        alertify
        .alert("Warning!","For safety and quality assurance,we     kindly request that all parties communicate ONLY through us.", function(){
        alertify.message('OK');});
            //warning = true;
        }
    }
});

</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-04 03:03:09

我建议使用正则表达式转换,而不是为每个搜索词反复编写$(selectors)[0].value.search(/SEARCHTERM/i) !== -1

代码语言:javascript
复制
$(selectors)[0].value.search(/(SEARCHTERM_1|SEARCHTERM_2|SEARCHTERM_3)/i) !== -1

您可以使用PHP implode函数从您的$words变量创建搜索项字符串。此外,如果您想要获取当前关注的输入元素的值,则应该使用$(this).val()而不是$(selectors)[0].value

您的完整代码应该如下所示:

代码语言:javascript
复制
<?php
//testing
$words = array();
foreach($db->getRecordSet('SELECT * FROM conversationKeywords WHERE  conStatus = :conStatus',array(':conStatus'=>1)) as $results){
    $words[] = $results['conKeyWord'];
}
?>

<script>
    var selectors = "#msg_text, #Message_Text, #job-desc";
    $("body").on("keyup", selectors, function(){
        if ($(this).val().search(/(<?= implode("|", $words) ?>)/i) !== -1) {
            alertify.alert("Warning!","For safety and quality assurance,we     kindly request that all parties communicate ONLY through us.", function(){
                alertify.message('OK');
            });
        }
    }
</script>

注意:$words[] = $results['conKeyWord'];array_push($words,$results['conKeyWord']);是一样的,但是它更快更干净。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54027914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档