Jquery表单元素访问

时间:2017-03-28 14:46:20

标签: javascript jquery ajax

我是jquery的新手并尝试执行以下操作:

我有一张表格:

<form method="POST" class="add-product" >
...
<label name="message"></label>
...
</form>

脚本:

$(document).ready(function() {
$(".add-product").submit(function(e) {
    e.preventDefault();
    var form = this;
    $.ajax({
        type: "POST",
        url: "/product/add/",
        data: $(this).serialize(),
        success: function(data) {
            $(form.elements["message"]).html(data.message);
        }
    });
});

});

我试图用邮件更新标签,但它不起作用。似乎我在语法上有一些错误:

$(form.elements["message"]).html(data.message);

3 个答案:

答案 0 :(得分:2)

问题是因为label集合中未显示form.elements。相反,您需要直接选择它:

&#13;
&#13;
$(".add-product").submit(function(e) {
  e.preventDefault();
  var form = this;

  // inside the AJAX callback...
  var data = {
    message: 'Foo bar'
  }
  $(form).find('label[name="message"]').html(data.message);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST" class="add-product">
  <label name="message"></label>

  <button>Submit</button>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

尝试使用选择器:

$("form.add-product label[name='message']").html(data.message)

您可以在此处阅读有关jQuery Attribute selector的更多信息。 https://api.jquery.com/attribute-equals-selector/

如果页面上有多个带有属性name='message'的标签,则上述内容无法使用。

答案 2 :(得分:0)

您使用了错误的jquery选择器,请尝试:

$('label[name="message"]').html(data.message);
希望这有帮助;