【问题标题】:Search next button javascript搜索下一个按钮 javascript
【发布时间】:2012-04-17 18:17:48
【问题描述】:

是否有任何可能的方法来创建下一个搜索和使用 javascript 搜索所有按钮?到目前为止,这是我的脚本...

<script type="text/javascript"> 
    function setSelectionRange(input, selectionStart, selectionEnd)
    {
        input.focus();
        input.setSelectionRange(selectionStart, selectionEnd);
    }
    function selectString (input, string)
    {
        var match = new RegExp(string, "g").exec(input.value);
        if (match)
    {
    setSelectionRange (input, match.index, match.index + match[0].length);
    }
    }
</script>

<form action="" method="get" onsubmit="selectString(document.getElementById('text'), document.getElementById('search').value);return false;">               
        <legend>
            <font face="verdana">Zoekveld</font face>
        </legend>
        <input id="search" name="search" type="text" size="75">
        <input type="submit" value="Zoeken">
</form>

<form name=form1 method="get">
        <legend>
            <font face="Verdana">Vind:</font face>
        </legend>
        <textarea id="text" cols="54" rows="20"></textarea>
</form>

这个脚本的问题是它只能找到第一个匹配...

【问题讨论】:

    标签: javascript regex search


    【解决方案1】:

    将 RegExp 存储在一个变量中,而不是在每个函数执行时创建一个新的,它的计数器属性 lastIndex 用于 exec() 将保持不变。

    var r = /^$/;
    function setSelector(string) {
        r = new RegExp(string, "i");
    }
    function selectNextMatch(input) {
        var match = r.exec(input.value);
        if (match)
            setSelectionRange(...);
        else
            alert("Nothing found");
    }
    
    <input type="text" size="75" onchange="setSelector(this.value);">
    <input type="button" value="Zoeken" onclick="selectNextMatch(document.getElementById('text'));">
    <textarea id="text" cols="54" rows="20"></textarea>
    

    【讨论】:

    • 所以如果我把它改成: var match = new RegExp(string, "i").lastIndex(input.value);它应该工作吗?但它没有 :( 很抱歉在 javascript 中如此菜鸟......(你能为我改变我的脚本......或者告诉我怎么做或者我可以在哪里获得教程或其他东西?)跨度>
    • 我添加了一个示例。我不确定何时您尝试查找其他匹配项,脚本取决于此。
    • 好吧,我会尝试更改我的代码。我试图一次找到所有匹配项。感谢到目前为止的帮助:)
    • 请仅在您的问题中发布代码,您可以对其进行编辑并附加格式化的源代码。
    • 我已在答案中添加了 html。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多