3

id 喜欢有一个输入框,用户可以在其中输入搜索词,然后将其传递给可能的 javascript 函数,然后将一些 url 段与搜索词结合起来,创建一个完整的 url。到目前为止,它在没有表单的情况下工作正常,但我想向它添加一个表单,这样用户就可以点击 Enter 而不是点击提交按钮。

提交按钮代码:

<a href="javascript: void(0)" onClick="this.href = i1 + document.getElementById('intranet').value + i3" target="_blank">
                    <div id="submit" class="out"
                        onMouseOver="document.getElementById('submit').className = 'over';"
                        onMouseOut="document.getElementById('submit').className = 'out';">
                        <span>Submit</span>
                    </div>
                </a>

错误的表格/输入代码:

<form action="" onSubmit="this.href = i1 + document.getElementById('intranet').value + i3; return false;" method="get" target="_blank">
                <input type="text" id="intranet" size="15" value="Search Intranet.."
                    onFocus="document.getElementById('intranet').value = ''"
                    onBlur="document.getElementById('intranet').value = 'Search Intranet..'" / >    
                </form>

可能的 js 函数来创建 url:

<script language="javascript" type="text/javascript">
                    function urlGen(value)
                        {
                            var i1 = "seg1";
                            var i2 = document.getElementById('intranet').value;
                            var i3 = "seg2";

                            var fullURL = i1 + document.getElementById('intranet').value + i3;

                            return fullURL;
                        }
                </script>
4

3 回答 3

3

使用表单的 onSubmit 事件,将适当的数据设置为 Intranet 的输入 - 不要更改 this.href(表单没有此类属性)。请记住,尽管可以在客户端禁用 JavaScript。还考虑将隐藏输入放入 i1 和 i2 的表单中,并在服务器端执行所有组合逻辑。

<form action="" onSubmit="urlGen()">
...
</form>

<script language="javascript" type="text/javascript">
                    function urlGen()
                        {


                            var i1 = "urlSeg1";
                            var i2 = document.getElementById('intranet').value;
                            var i3 = "urlSef2";

                            document.getElementById('intranet').value = i1 + i2 + i3;


                        }
                </script>
于 2010-07-21T19:49:04.497 回答
3

也许是这样的:

<form action="" onSubmit="urlGen(this);" method="get" target="_blank">
    <input type="text" id="intranet" size="15" value="Search Intranet.."
                 onFocus="this.value = ''"
                 onBlur="this.value = 'Search Intranet..'" / >    
</form>

function urlGen(f){
   var i1 = 'urlSeg1';
   var i2 = f.intranet.value;
   var i3 = 'urlSef';
   f.action = i1 + i2 + i3;
   return true;
}
于 2010-07-21T19:51:44.053 回答
0

还应该注意,这是一个侧边栏小工具,只需要使用 ie 并且服务器/客户端限制为空。尝试了这两种方法(我认为 - 仍然是初学者),但是当我按 Enter 时发生的只是页面重新加载(target="_blank" 打开相同的新页面)。

id 喜欢完全取消提交按钮区域,但它可以在没有表单标签的情况下使用。

我现在拥有的:

<div id="row2">

                <script language="javascript" type="text/javascript">
                    function urlGen(f)
                        {
                            var i1 = "seg1";
                            var i2 = f.intranet.value;
                            var i3 = "seg2";

                            var fullURL = i1 + i2 + i3;
                            f.action = i1 + i2 + i3;

                            return true;
                        }
                </script>

                <!-- Intranet Search -->
                <form action="" onSubmit="urlGen(this)" method="post" target="_blank">
                <input type="text" id="intranet" size="15" value="Search Intranet.."
                    onFocus="this.value = ''"
                    onBlur="this.value = 'Search Intranet..'" / >   
                </form>

            <br><br>

                <a href="javascript: void(0)" onClick="this.href = i1 + document.getElementById('intranet').value + i3" target="_blank">
                    <div id="submit" class="out"
                        onMouseOver="document.getElementById('submit').className = 'over';"
                        onMouseOut="document.getElementById('submit').className = 'out';">
                        <span>Submit</span>
                    </div>
                </a>
            </div>
于 2010-07-21T20:03:19.843 回答