jQuery仅在div包含“ someText”时提交表单

时间:2019-02-20 16:31:36

标签: jquery submit

<div id="field"><div class="field-item ">someText</div></div><br>

<form action="submit.php">
<input type="text" >
<button id="somediv" class="button button4" >CHECK URL</button>
</form>


<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(event){


if ($('#field > div.field-item:contains("someText")').length > 0) {
    $("#somediv").removeClass("button button4");
    $("#somediv").addClass("button button2");
     $("#somediv").text("DOWNLOAD");
     setTimeout(() => {
             $("#somediv").removeClass("button button3");
              $("#somediv").addClass("button button4");
             $("#somediv").text("CHECK URL");
             location.reload();
        }, 8000);


}
else{
    $("#somediv").removeClass("button button4");
    $("#somediv").addClass("button button3");

     $("#somediv").text("THIS IS NOT VALID! ");
setTimeout(() => {
             $("#somediv").removeClass("button button3");
              $("#somediv").addClass("button button4");
             $("#somediv").text("CHECK URL");
             location.reload();
        }, 1000);




}
  });
});
</script>

现在,仅当item.contains包含“ SomeText”时,我才想提交按钮时提交表单;如果div与该文本不同,则阻止提交... 我尝试用onsubmtit调用函数,但就我而言,是无条件提交...

1 个答案:

答案 0 :(得分:0)

要使此工作首先挂接到submit元素的form事件,而不是click的{​​{1}}事件。然后在事件中的button逻辑调用else中停止表单提交。

还请注意,您可以缓存preventDefault()选择器,也可以使#somediv调用变干。试试这个:

setTimeout()

有两件事要注意。首先,这是一种非常不可靠的验证方法。我强烈建议您重新考虑如何启用提交功能。

第二,如果验证通过表单,则将立即提交,因此您8秒的超时时间和$(document).ready(function() { var $div = $('#somediv'); $("form").on('submit', function(e) { var timeoutDelay; if ($('#field > div.field-item:contains("someText")').length > 0) { $div.removeClass("button button4").addClass("button button2").text("DOWNLOAD"); timeoutDelay = 8000; } else { e.preventDefault(); $div.removeClass("button button4").addClass("button button3").text("THIS IS NOT VALID"); timeoutDelay = 1000; } setTimeout(() => { $div.removeClass("button button3").addClass("button button4").text("CHECK URL"); location.reload(); }, timeoutDelay); }); }); 完全是多余的。