如何让jQuery选择带有.(句号)在他们的身份证上?

2022-08-30 01:49:03

给定以下类和控制器操作方法:

public School
{
  public Int32 ID { get; set; }
  publig String Name { get; set; }
  public Address Address { get; set; }
}

public class Address
{
  public string Street1 { get; set; }
  public string City { get; set; }
  public String ZipCode { get; set; }
  public String State { get; set; }
  public String Country { get; set; }
}

[Authorize(Roles = "SchoolEditor")]
[AcceptVerbs(HttpVerbs.Post)]
public SchoolResponse Edit(Int32 id, FormCollection form)
{
  School school = GetSchoolFromRepository(id);

  UpdateModel(school, form);

  return new SchoolResponse() { School = school };
}

以及以下形式:

<form method="post">
  School: <%= Html.TextBox("Name") %><br />
  Street: <%= Html.TextBox("Address.Street") %><br />
  City:  <%= Html.TextBox("Address.City") %><br />
  Zip Code: <%= Html.TextBox("Address.ZipCode") %><br />
  Sate: <select id="Address.State"></select><br />
  Country: <select id="Address.Country"></select><br />
</form>

我能够更新学校的实例和学校的地址成员。这真是太好了!谢谢 ASP.NET MVC团队!

但是,如何使用jQuery选择下拉列表,以便我可以预先填充它?我意识到我可以做这个服务器端,但页面上会有其他动态元素影响列表。

以下是我到目前为止所拥有的,它不起作用,因为选择器似乎与ID不匹配:

$(function() {
  $.getJSON("/Location/GetCountryList", null, function(data) {
    $("#Address.Country").fillSelect(data);
  });
  $("#Address.Country").change(function() {
    $.getJSON("/Location/GetRegionsForCountry", { country: $(this).val() }, function(data) {
      $("#Address.State").fillSelect(data);
    });
  });
});

答案 1

来自谷歌网上论坛

在每个特殊字符前使用两个反斜杠。

jQuery 选择器中的反斜杠将转义下一个字符。但是你需要其中两个,因为反斜杠也是JavaScript字符串的转义字符。第一个反斜杠转义第二个反斜杠,在字符串中给你一个实际的反斜杠 - 然后转义jQuery的下一个字符。

所以,我想你正在看

$(function() {
  $.getJSON("/Location/GetCountryList", null, function(data) {
    $("#Address\\.Country").fillSelect(data);
  });
  $("#Address\\.Country").change(function() {
    $.getJSON("/Location/GetRegionsForCountry", { country: $(this).val() }, function(data) {
      $("#Address\\.State").fillSelect(data);
    });
  });
});

另请查看如何在jQuery FAQ上按具有CSS表示法中使用的字符的ID选择元素


答案 2

如果 jQuery id 选择器包含空格,则不能使用该选择器。使用属性选择器:

$('[id=foo bar]').show();

如果可能,请同时指定元素类型:

$('div[id=foo bar]').show();