2

我在这里有一个网站。

这是我的小表格中的代码...

<form method="get" action="https://www.google.com/search" target="_blank"> 
    <table border="0" cellpadding="0"> 
        <tr>
            <td> 
                <input type="text" name="q" size="25" maxlength="50" value="" id="google" /> 
                <input type="submit" value="Search" />
            </td>
        </tr> 


        <tr>
            <td align="center" style="font-size:75%">
                <input type="radio" name="search" value="google.com" onclick="act('public library ')"/> Libraries
                <input type="radio" name="search" value="google.com" onclick="act('subway OR FedEx ')"/> Fax
                <!--<input type="radio" name="search" value="google.com" onclick="act('ice cream ')"/> Ice Cream-->                    
            </td>
        </tr>
    </table> 
</form>

这是与上述HTML相关的Javascript(可能与我的问题有关)...

function act(change) {
    myOption = change;
    document.getElementById("google").value = myOption;
    }

这里有一个 JSFiddle 。(感谢@koala_dev)

在我的网站上,如果您单击“图书馆”,那么“公共图书馆”将显示在文本框中。我留了一个空格来输入邮政编码,然后单击“搜索”时,结果会显示在另一个窗口的 Google 页面中。

我希望看到的事情发生...

我希望用户单击“图书馆”,但我不希望显示“公共图书馆”文本。我只想让用户输入他们的邮政编码并点击搜索。我希望“公共图书馆”文本保持隐藏。

编辑:对不起...搜索字段是页面右上角的那个。那里有一个标签,上面写着在这里找到它!(输入邮政编码) ...

4

4 回答 4

2

我认为您希望将函数绑定到提交按钮,并在其中为输入的 ed 值添加前缀“公共图书馆”或“地铁或联邦快递”

于 2013-08-21T19:27:06.087 回答
2

这是我的版本

现场演示

$(function() {
  $("form").on("submit",function(e) {
    var zip = $("#google").val();
    var what = $("input[name='what']:checked").val();
    what=what?zip+" "+what:zip;  
    if (what) $("#google").val(what);
    else e.preventDefault();  
  });
});    

您可能希望通过在聚焦字段时从中删除单选值来重置字段

于 2013-08-21T19:42:39.810 回答
2

为什么不直接使用 ajax 将您的请求发送到 google,然后您就可以准确控制每个事件的处理方式。它还会消除对可能被弹出窗口阻止程序阻止的页面刷新或弹出窗口的需要吗?

$("input[name=search]").change(function () {
     //alert($(this).val());
     option = $(this).val();
     var $url = "https://www.google.com/search/" + option;
     $.ajax({
         url: $url,
         type: 'GET',
         beforeSend: function () {
             //do something before submitting
         },
         success: function (data, textStatus, xhr) {
             //success do something with the data you get back
             console.log(data);
             $("#results").html(data);
         },
         error: function (xhr, textStatus, errorThrown) {
             //something broke
             $("#results").html(errorThrown);
         }
     });
 });


    <form>
        <table border="0" cellpadding="0">
            <tr>
                <td>
                    <input type="text" name="q" size="25" maxlength="50" value="" id="google" />
                    <input type="submit" value="Search" />
                </td>
            </tr>
            <tr>
                <td align="center" style="font-size:75%">
                    <input type="radio" id='radiobtn1' name="search" value="Libraries" />Libraries
                    <input type="radio" id='radiobtn2' name="search" value="Fax" />Fax
                    <!--<input type="radio" name="search" value="google.com" onclick="act('ice cream ')"/>Ice Cream--></td>
            </tr>
        </table>
    </form>
    <div id="results"></div>
于 2013-08-22T16:02:00.473 回答
0

当您单击单选按钮search时,它会触发 javascript 代码act('public library ')。查看您的代码,您有一个函数行为,如下所示:

 function act(change) {
 myOption = change;
 document.getElementById("google").value = myOption;
} 

您的问题在于该代码的最后一部分document.getElementByID("google").value = myOption。javascript似乎没有做任何其他事情。你的意思是让它之后做其他事情吗?如果没有,您不必首先触发该 javascript。

于 2013-08-21T19:25:54.893 回答