下面的功能可以正常工作。这是验证表格。简而言之,我有几个输入字段。如果我点击提交并且未在任一输入中输入任何文本,则会显示验证错误。如果我填写一个字段,则只会更新其中一个字段。但是,如果我再次点击“提交”,即使没有填写第二个表单输入,else {}也会被触发,而不是if {}应该确保它被填写等等。
不熟悉,但这是假的回报;问题
if ($('input[type="text"]:visible').val().length == 0) {
$('.submitModal').click(function () {
$('.modal').modal('show');
});
}
else {
$('.submitModal').click(function () {
$('.modal').modal('hide');
});
}
知道我做错了吗?
答案 0 :(得分:1)
这是倒退的想法。绑定点击,期间。没有条件。点击后,决定你想要发生什么(即使这只是意味着忽略点击)。
如果你确实绑定了一个点击,那么填写表单就不会解除绑定。即使你真的可以解开它,也没有什么好理由。
如果.submitModal
实际上是一个提交输入元素(而不是具有该类的锚或按钮),而不是绑定一个单击侦听器,请绑定一个提交侦听器。
基于迈克自己的代码起点,这里有一个例子(稍微偏离真实的上下文,因为我没有modal
功能而没有不必要的努力!)
$('.submitModal').click(function (e) {
e.preventDefault();
$('input[type="text"]:visible').each(function() {
if ($(this).val().length == 0) {
$('.modal').show();
}
else {
$('.modal').hide();
}
});
});
首先,我将事件传递给点击处理程序,然后将preventDefault
传递给它。这可以防止锚点导致页面刷新。
但我做的唯一其他事情是将实际的.modal()
调用换成通用jQuery .show()
和.hide()
,只是为了概念验证逻辑。
jsfiddle.net/gnaXn/2
当填写所有可见文本字段时,“模态”隐藏。当它们再次被清空时,“模态”再次出现。