【问题标题】:Submit form on select (using Drupal)在选择时提交表单(使用 Drupal)
【发布时间】:2011-04-13 01:04:38
【问题描述】:

我这辈子都做不出来。使用 Drupal 并有一个表单,一旦用户选择了一个选项,我想提交该表单。 HTML 是

<form id="people-blockform" method="post" accept-charset="UTF-8" action="/people">
  <div>
    <div id="edit-filter-wrapper" class="form-item">
      <label for="edit-filter">Filter: </label>
      <select id="edit-filter" class="form-select" name="filter">
        <optgroup label="label1">
            <option value="all">Everyone</option>
            <option value="option1">option1</option>
            <option value="option2">option2</option>
        </optgroup>
        <optgroup label="Location">
            <option value="loc1">loc1</option>
            <option value="loc2">loc2</option>
        </optgroup>
      </select>
    </div>
    <input type="submit" class="form-submit" value="Filter" id="edit-submit" name="op">
    <input type="hidden" value="form-ccd2e26e54becdc164411311ff397989" id="form-ccd2e26e54becdc164411311ff397989" name="form_build_id">
    <input type="hidden" value="cb83794b5b00da15e546e12ec5499e64" id="edit-people-blockform-form-token" name="form_token">
    <input type="hidden" value="people_blockform" id="edit-people-blockform" name="form_id">
  </div>
</form>

我尝试使用的 jQuery 是这样的:

$(function () {
            $("#edit-filter").live("change keyup", function () {
                $("#people-blockform").submit();
            });
 });

非常感谢任何帮助

【问题讨论】:

  • 那……应该可以。也许keyup 搞砸了?
  • nope- 不做任何事情。这让我很困惑。我一定在某个地方有一个愚蠢的错误

标签: jquery drupal forms optgroup


【解决方案1】:

这应该可以。如果您将以下代码单独放入文件中,它将正常工作:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
  $("#edit-filter").live("change keyup", function () {
    $("#people-blockform").submit();
  });
});
</script>
</head>
<body>
<form id="people-blockform" method="post" accept-charset="UTF-8" action="test.php">
  <div>
    <div id="edit-filter-wrapper" class="form-item">
      <label for="edit-filter">Filter: </label>
      <select id="edit-filter" class="form-select" name="filter">
        <optgroup label="label1">
            <option value="all">Everyone</option>
            <option value="option1">option1</option>
            <option value="option2">option2</option>
        </optgroup>
        <optgroup label="Location">
            <option value="loc1">loc1</option>
            <option value="loc2">loc2</option>
        </optgroup>
      </select>
    </div>
    <input type="submit" class="form-submit" value="Filter" id="edit-submit" name="op">
    <input type="hidden" value="form-ccd2e26e54becdc164411311ff397989" id="form-ccd2e26e54becdc164411311ff397989" name="form_build_id">
    <input type="hidden" value="cb83794b5b00da15e546e12ec5499e64" id="edit-people-blockform-form-token" name="form_token">
    <input type="hidden" value="people_blockform" id="edit-people-blockform" name="form_id">
  </div>
</form>
</body>
</html>

鉴于这是孤立地工作,它一定是其他东西把事情搞砸了。

  • 页面上还有哪些其他表单?
  • 页面上还有哪些其他 Javascript/jQuery?
  • 您确定您提到的 jQuery 被正确包含了吗?
  • 您是使用 drupal_add_js() 来包含必要的 .js 文件,还是使用其他方法?

【讨论】:

    【解决方案2】:

    检查您的 jQuery 版本。我现在正在安装的 D6.16 上安装了 1.2.6,但是直到 1.3 (http://api.jquery.com/live/) 才添加 .live 处理程序。因此,您的代码返回“TypeError:表达式'$("#edit-field-servicegroup-value").live' [undefined] 的结果不是函数。”。

    【讨论】:

    • 确实-谢谢大家。我有错误的 jQuery 版本 - 更改为 1.3 并且一切正常。打扰了!
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2017-08-03
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多