使用LIKE运算符选择与模式

时间:2015-06-25 17:11:32

标签: javascript php jquery html checkbox

我需要一点指导。我有一个HTML表单,包含从数据库查询生成的数组中提取的很长的项目列表(它是大学课程列表)。用户需要能够选择与他们的研究相关的多个或几个课程:因为列表可以有数百个或项目我有一个"选择全部"和"选择无"函数并添加了一个jQuery shift-select批处理选择器,以使其尽可能简单。

但是,我还希望他们能够在输入框中输入一些文本并单击“应用”以使用LIKE运算符选择标签文本模式匹配的所有复选框(即,如果他们想要所有MATH课程,或者所有课程等级2xx)。该项目使用PHP和JavaScript / jQuery / AJAX。

我知道如何根据LIKE查询从数据库中提取数据,但我对于如何最好地循环生成的表单并定位我的表单中的项目感到有点困惑。 (我的PHP非常强大,我的jQuery有点摇摇欲坠)。

复选框列表是通过数组循环生成的,每个项目的设置如下:

$o .= '<input id="'.$rw[2].'_'.$rw[0].'"
type=checkbox  name="' . $rw[2].'_'. $rw[0]. '" />';
$o .= '<label for="'.$rw[2].'_'. $rw[0].'"> ' . $rw[1] . '</label>';
$o .= '</td>';

因此,我们最终得到一个带有LABEL FOR和标签文本的简单复选框表单,这些项目都被命名为数组键。

这是典型项目的HTML输出:

<tr><td><input id="110_105" type=checkbox name="110_105" />
<label for="110_105"> PHIL233</label></td></tr>

很抱歉,如果这个描述有点长,但我需要的是如何在生成它之后循环遍历表单元素以选择模式匹配的每个项目的复选框。

希望这是有道理的!

垂涎

2 个答案:

答案 0 :(得分:0)

This situation is perfect for using AJAX to filter the checkbox list. I highly advocate for this instead.

But if you need to filter on the client it's fairly easy with JavaScript.

//give the labels a class so they are easy to find
var labels = document.getElementsByClassName('course-name');
//filtering text field
var query = document.getElementById('query');
//'apply' button
var queryBtn = document.getElementById('query-submit');

queryBtn.addEventListener('click', function() {

    for (var i = 0; i < labels.length; i += 1) {

        var label = labels[i];
        var text = label.innerText;

        if (text === query.value) {

            label.previousElementSibling.checked = true;
        }
    }

}, false);

答案 1 :(得分:0)

You can try it with jQuery find method.

http://api.jquery.com/find/

With it and the "Attribute Contains Selector", you can do the trick.

http://api.jquery.com/attribute-contains-selector/