0

我们的 Web 应用程序中有一个标准的账单表格。我正在使用 JQuery selectBox 插件 来根据客户的请求来完善输入,不幸的是,这会导致浏览器state在 auto_fills_ 用户地址时忽略下拉列表。

在大多数情况下,插件会隐藏<select>输入,然后在漂亮的下拉版本中来回传递值的变化。原始隐藏输入或下拉菜单都不会获取状态 auto_fill_。一旦我关闭selectBox它,它就会再次工作。

如何提示浏览器更新新的下拉元素?

JS初始化插件

$(function() {
  $(".WhiteDD").selectBox();
}

HTML post 插件初始化:

<div class="FormBlock">
  <label class="FormLabel" for="city">City</label>
  <input class="BillingInput required" id="city" name="transaction[billing][locality]" type="text" value="">
</div>

<div class="FormBlock">
  <label class="FormLabel" for="state">State</label>
    <select name="transaction[billing][region]" class="WhiteDD selectBox" id="state" style="display:none">
      <option value="AL" selected="selected">AL</option>
      ...
      <option value="WY">WY</option>
    </select>

    <!-- This code is injected by the selectbox plugin-->
    <a class="selectBox WhiteDD selectBox-dropdown" title="" tabindex="0"><span class="selectBox-label">AL</span><span class="selectBox-arrow"></span></a>
    <!-- End injection -->

</div>

编辑

澄清 - 我指的是默认浏览器地址 auto_fill_ 功能。这不是 Javascript 中发生的事情,或者我可以使用 selectBox 插件提供的方法来捕获和更新它。

有没有办法让默认浏览器 auto_fill_ 动作触发 Javascript?

放弃

使自动填充与默认的 HTML 下拉菜单很好地配合是一个挑战,使它与 Jquery 插件很好地配合起来比它的价值更麻烦。我们将状态下拉列表换成了两个字符的屏蔽文本输入。感谢您的回复,对不起,我无法提供全部赏金。

4

2 回答 2

1

您将使用 selectBox API 并在应该自动完成表单其余部分的同一函数中调用它。这将使用下拉列表中的第一个值更新状态下拉列表。

$(".WhiteDD").selectBox('value', 1);

看看这里:https ://github.com/claviska/jQuery-SelectBox/blob/master/index.php从第 38 行开始。

于 2011-09-21T21:14:31.613 回答
1

您没有提供太多关于表单的整个“自动完成”功能的信息,但我假设在您的代码中的某个时刻,您知道您希望选择框默认为什么状态 - 在那时,selectBox再次初始化您的状态选择:

$("#state").selectBox("value", [state index]);

其中 [state index] 是您要选择的状态的索引。

我从selectBox 演示页面中得到了这个想法,查看了源代码并检查了value-2按钮的功能。

于 2011-09-18T05:23:22.450 回答