<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调用函数,但就我而言,是无条件提交...
答案 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);
});
});
完全是多余的。