像Google这样的自动完成功能,无法在单选按钮事件中获取数据 - c#

我在我的网站上建立了一个类似google搜索的选项,并且在搜索框中还包含了Jquery UI Autocomplete
我也有两个radio button,并且在它们的Checked事件中我正在绑定数据源。

就像是否选中了Company Name单选按钮时,我使用的是BindShipperName();如果选中了Product Name,则我使用的是BindProductName()。这些绑定函数正在绑定适当的数据源。

以下是该代码:

if (rdoCompany.Checked){
  listFilter = BindShippmerName();
} else if (rdoProduct.Checked) {
  listFilter = BindProductName();
}

当我使用以下脚本进行自动完成时,它会在Checked事件上绑定适当的数据,但是由此我无法有效地实现搜索功能。我所做的只是反映数据库搜索结果中任何地方的类型化组合。所以这是错误的。

function LoadList() {        
  var ds=null;
  ds = <%=listFilter %>;
  $( "#txtConsignee" ).autocomplete({
    source: ds
  });
}

然后,我添加了以下脚本以使其起作用,但是在页面加载时仅绑定一次数据,默认情况下会在页面加载时检查Product Name,因此它仅是绑定产品名称。如果我单击Company Name单选按钮,那么即使它已将该rdoCompany.Checked分配给listFinder,它的绑定产品名称也是如此

我的仅绑定Product Name的更新脚本如下:

function LoadList(){        
  var ds=null;
  ds = <%=listFilter %>;
  $( "#txtConsignee" ).autocomplete({
    source: function(req, responseFn) {
      var re = $.ui.autocomplete.escapeRegex(req.term);
      var matcher = new RegExp( "^" + re, "i" );
      var a = $.grep( ds, function(item,index){
        return matcher.test(item);
      });
      responseFn( a );
    }
  });
}

我在哪里错呢?

参考方案

这是一个解决方案:

C#

string names = "[" + BindShippmerName() + "," + BindProductName() + "]";

js

function LoadList()
{        
    var names = <%=listFilter %>;  //names will be now a js array of 2 elements
    var $rdoCompany = $('#<%=rdoCompany.ClientID %>');   //Get rdoCompany jquery obj
    var index = $rdoCompany.is(":checked") ? 0 : 1;   //Get selected in client side
    var ds = names[index]:      
    //From here, it's the same 
        $( "#txtConsignee" ).autocomplete({
              source: ds
        });
}

(如果以上操作失败,请尝试var $rdoCompany = $('#<%=rdoCompany.ClientID %>' :radio);,也许我的内存失败了:))

我们正在做的是在javascript中获取选定的选项“ live”,因此它是动态的,不仅会获得初始值。

您的问题是您仅获得了初始值,因此如果更改了初始值,它将不起作用。

希望这可以帮助。干杯

jQuery DataTable TableTool在IE和Firefox中不起作用 - c#

我在MVC4 ASP.NET Web应用程序中使用Jquery DataTable TableTool。导出到Excel和PDF可以与Chrome完美配合。但是不能在IE和FireFox中使用。我的代码如下 dom: 'T<"clear">lfrtip', tableTools: { "sSwfP…

单击选项卡链接时,请专注于每个引导选项卡中的First asp:textbox - javascript

我是开发的新手,并开始开发简单的asp.net应用程序。我正在使用每个都有一些asp标签和文本框的bootstrap选项卡。单击该选项卡时,我要重点关注选项卡内容中的第一个文本框。我搜索了各种答案,但都是针对输入字段的(exp:输入type =“ text”)。找不到适用于ASP文本框的任何内容。任何帮助将不胜感激。谢谢 javascript参考方案 ASP…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

asp.net使用客户端验证而不发布到服务器 - c#

我有一个很长的表格,分为几个部分。我想利用内置的ASP.NET验证控件而不在提交表单之前将其回发到服务器。为了提供更多的上下文,让我解释一下我的想法。该表格分为几部分,每个部分都有一个“下一步”按钮。单击“下一步”按钮时,将使用ASP.NET包含的客户端代码来验证该部分。如果该部分有效,则jquery方法将隐藏该部分并显示下一个。当用户到达表单的最后部分时,…

在IE8中可以单击带有警报的“禁用”按钮(Asp.net网站中的浏览器兼容性问题) - c#

我已禁用链接按钮和图像按钮(位于链接按钮内部,以便我可以显示警报),并且在Chrome中可以正常工作,但是当我在IE8中打开该图像时,该图像被禁用,但是当我单击它时,它会显示popup('确定要删除此用户吗?')。为什么在IE8和IE7中出现此错误,我该如何解决。 <asp:LinkButton ID="lnk_DeleteUser"…