Javascript .wrap();破坏prevent.Default();
我已经编写了一个自定义表单验证脚本,但由于某些原因,在Javascript .wrap();破坏prevent.Default();,javascript,jquery,preventdefault,Javascript,Jquery,Preventdefault,我已经编写了一个自定义表单验证脚本,但由于某些原因,在中包装input[type=text]元素会阻止我阻止input[type=submit]的默认设置 以下是相关代码: $(“输入[type=text]”。换行(“”) 正在中断: $("input[type=submit]").click(function(event) { event.preventDefault(); }); 为什么会这样?如果你需要一个更完整的脚本,让我知道,我只是张贴整个事情 好吧,出于某种原因,禁用该行代
中包装input[type=text]
元素会阻止我阻止input[type=submit]
的默认设置
以下是相关代码:
$(“输入[type=text]”。换行(“”)代码>
正在中断:
$("input[type=submit]").click(function(event) {
event.preventDefault();
});
为什么会这样?如果你需要一个更完整的脚本,让我知道,我只是张贴整个事情
好吧,出于某种原因,禁用该行代码允许输入[type=submit]
上的.preventDefault
工作,但如果我只使用
// wrap inputs
$("input[type=text]").wrap("<div class=\"inputWrapper\" />");
// validate on form submit
$("input[type=submit]").click(function(event) {
event.preventDefault();
});
您需要使用新的DOM元素维护某种引用。这将首先将其作为初始化的DOM元素放置在变量中(而不是像您那样作为字符串),并将其作为原始元素放置,原始元素将重新放置以维护事件:
var $inputWrapper = $("<div class=\"inputWrapper\" />"),
$inputText = $("input[type=text]");
$inputText.wrap("<div class=\"inputWrapper\" />");
var$inputWrapper=$(“”),
$inputText=$(“输入[type=text]”);
$inputText.wrap(“”);
然后您可以将该元素替换回中
var errorCheck = $(this).parent("form").children(".error").length > 0;
当您.wrap
文本输入时,它们不再是表单的子项。使用。查找
顺便说一下,$(此+“选择器”)
无效。您可能想使用$(this).is(“选择器”)
我更改了$(this+“选择器”)
这件事,但我在.find()方面遇到了问题
,它似乎不适用于长度代码>。你能给我举个例子说明这应该如何工作吗?这不起作用:var errorCheck=$(This).parent(“form”).find(.error”).length>0代码>不用担心,它似乎有效。不知道我的问题是什么。谢谢。@Rev对我来说似乎很好。可能问题是您只在blur上添加了.error
类。
var $inputWrapper = $("<div class=\"inputWrapper\" />"),
$inputText = $("input[type=text]");
$inputText.wrap("<div class=\"inputWrapper\" />");
var errorCheck = $(this).parent("form").children(".error").length > 0;