我在JQuery和$this有点问题。
我需要它,因为我动态append
不同的表单,我只想提交一个。
我在两种情况下使用它,一个有效,另一个无效,我不知道为什么:
这个行得通,它提交我点击的div:
$(document).ready(function() {
$("#resultcontainer").on("click", "#DivResult", function() {
$(this).find("form").submit();
});
});
这个不起作用:
$(document).ready(function () {
$(".validedem").on("click", function() {
if(confirm("Are you sure that you want to deny this film ? ")){
$(this).find("form").submit();
}
else {
return false;
}
});
});
其中.validedem
是我的按钮的类。
HTML
<div>
{% for item in listerecueattente %}
<div class="funzies">
<form action="/app.php/start/go" role="form" method="POST" id="formulaire">
<div id="appendit" class="container">
<div class="container col-lg-12 blueskycont mrgbot10" id="choixvalide">
<input type="HIDDEN" id="aTrajType" value="{{listerecueattente[0].DEMT_ID_PROP }}" name="DEMT_RED" >
<input type="HIDDEN" id="aProtRed" value="{{ listerecueattente[0].DEMT_TRAJ_TYPE }}" name="A_PROT_RED" >
<input type="HIDDEN" id="sqdsqds" value="{{listerecueattente[0].DEMT_NUM }}" name="DEMT_NUM" >
<div class="container col-lg-12">
<div class = funzies col-lg-6> {{ listerecueattente[0].PROF_PRENOM }} sdq </div>
<button class="btn btn-success col-lg-3 validedem ">Confirmer cette demande <i class="glyphicon glyphicon-white glyphicon-ok-sign"></i></button>
<button class="btn btn-danger col-lg-3 refusedem" >Refuser cette demande<i class="glyphicon glyphicon-white glyphicon-off"></i></button> </a>
</div>
</div>
</div>
</form>
</div>
{%endfor%}
</div>
你知道为什么$(this).find("form").submit();
只提交我列表的第一个结果,而不是我点击按钮的地方吗?
发布于 2015-06-17 21:10:31
如果我理解正确的话:
按钮动态追加表单元素,因此需要使用事件委托jQuery.on
jQuery.closest
定位包含被单击按钮的表单$(document).ready(function() {
$(document).on("click", ".validedem", function(e) {
e.preventDefault();
if (confirm("Are you sure that you want to deny this film ? ")) {
$(this).closest("form").trigger("submit");
}
});
});
话虽如此,在一个表单上使用两个提交按钮是可能的。您可以查看在服务器端单击了哪个按钮。提交按钮需要有不同的值。
发布于 2015-06-17 20:59:24
我认为你的问题出在"on“函数的使用上,因为你使用的是某个框架,你的html可以异步加载。
在这种情况下,您使用"on“做出了正确的决定
$("#resultcontainer").on("click", ".validedem", function() {
您应该在这里以相同的方式使用它
$("any parent static dom element").on("click", ".validedem", function() {
https://stackoverflow.com/questions/30892144
复制相似问题