人民,
我最近从1.4.1升级到1.5.1以使用一些更新,但它已经停止某些功能因某些原因而起作用。
下面的函数将确认按钮(x)作为参数,并检查所有非可选的输入字段是否包含其中的某些内容。
如果一切正常,它会继续,如果出现错误,则在完成必要的数据之前,不应该让您关闭该框。
function checkAllInputs(x){
var missingRequired = x.closest('.container').find('input[value=""]').not('.jsOptional');
if (missingRequired.length) {
// DO NOT CLOSE THE BOX
}
else {
x.closest('.container').hide();
// CLOSE THE BOX and continue
}
};
但此时 - 无论输入是否丢失,该按钮仍会关闭该框。
有任何想法,还是需要更多信息?
谢谢, 凯文
答案 0 :(得分:2)
我可以通过使用只有文本输入的简单表单进行测试来复制问题(为简单起见)。当我添加:text
伪选择器或[type=text]
属性过滤器时,它可以正常工作。例如:
$("form").submit(function() {
var missingRequired = $(this).find('input:text[value=""]').not('.jsOptional');
alert(missingRequired.length);
if (missingRequired.length) {
alert(missingRequired.length);
alert("missing!");
}
else {
alert("none missing!");
}
return false;
});
测试标记:
<form>
<input class="jsOptional" type="text"/>
<br />
<input type="text" />
<br />
<input type="text" />
<input type="submit"/>
</form>
You can try it here.(删除:text
,它会中断,测试一下:)
我建议采用以下更强大的方法来确定哪些输入为空:
var missingRequired = $(this).find('input:text')
.not('.jsOptional')
.filter(function() {
return $.trim($(this).val()) == "";
});
if (missingRequired.length) {
...
问题似乎与未能指定输入类型有关 - 也就是说,它可能是许多其他事情,如果没有看到你的标记就很难知道。我想我只是觉得无聊。